![](/img/trans.png)
[英]how to read data from a json file which is specified with a particular URL using java
[英]use parameterized class to return read data from specified file using Java
我要做什么:在测试期间,我必须从不同的文件中读取数据。 (用户ID,Office ID等。每个ID在单独的文件中)使用类read_file(file_name)的想法; 文件名-将是文件名,读取位置。 我有的:
public class Read_File {
public static String client_number;
private FileReader fr;
public static String read(String file_name){
String fileName=System.getProperty("user.dir")+"/src/resources/data_files/"+file_name+".txt";
try{
FileReader inputFile = new FileReader(fileName);
BufferedReader bufferReader = new BufferedReader(inputFile);
String client_number = bufferReader.readLine();
System.out.print("client number "+client_number);
bufferReader.close();
} catch (FileNotFoundException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
return client_number;
}
public Read_File (FileReader fr) {
this.fr = fr;
}
}
我正在尝试运行它
public void Find_Customer() {
String client_number;
Read_File file = new Read_File(fr);
client_number = file.read("last_customer");
System.out.print("client number"+client_number);
}
我能够从文件中读取值,但是当我尝试从方法中获取此值时-我为空。 我做错了什么。 你能帮我把它写正确吗?
您的方法是静态的。 您有2个名为client_number的实体。 一个是Read_File类的静态成员,一个是String client_number = bufferReader.readLine();
。
try块结束时,局部变量的作用域结束。 您实际上读取了该值,但是返回成员client_number的值,该值为null。
试试这个client_number = bufferReader.readLine();
(删除此声明前面的String类型)。 还应注意,如果发生异常,则返回null。
另一个解决方案是删除类成员client_number(代码如下所示):
public class Read_File {
private FileReader fr;
public static String read(String file_name){
String fileName=System.getProperty("user.dir")+"/src/resources/data_files/"+file_name+".txt";
String client_number = null;
try{
FileReader inputFile = new FileReader(fileName);
BufferedReader bufferReader = new BufferedReader(inputFile);
client_number = bufferReader.readLine();
System.out.print("client number "+client_number);
bufferReader.close();
} catch (FileNotFoundException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
return client_number;
}
public Read_File (FileReader fr) {
this.fr = fr;
}
}
附带说明一下,由于read
方法是静态的,因此您无需创建Read_File
类型的对象。
好吧,您混淆了Java语言的几个概念...一个快速而肮脏的修复程序看起来像这样:
public class Read_File {
public static String read(String file_name){
String client_number = "";
String fileName=System.getProperty("user.dir")+"/src/resources" +
"/data_files"+file_name+".txt";
try{
FileReader inputFile = new FileReader(fileName);
BufferedReader bufferReader = new BufferedReader(inputFile);
String client_number = bufferReader.readLine();
System.out.print("client number "+client_number);
bufferReader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
//To change body of catch statement use File | Settings | File Templates.
} catch (IOException e) {
e.printStackTrace();
//To change body of catch statement use File | Settings | File Templates.
}
return client_number;
}
}
然后,您可以简单地这样称呼它:
String client_number = Read_File.read("last_customer");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.