【发布时间】:2017-06-14 08:03:29
【问题描述】:
我有以下方法:
public String readJson(){
String everything = "";
try(BufferedReader br = new BufferedReader(new FileReader("/users/mypc/test/etc/one.json"))) {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
sb.append(System.lineSeparator());
line = br.readLine();
}
everything = sb.toString();
logger.debug("Everything: " + everything);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
logger.debug("line: " + everything);
return everything;
}
这可以正常工作。我的问题是我不想硬编码文件路径/users/mypc/test/etc/one.json。我尝试通过执行以下操作将其添加到属性文件中:
test.properties:
file1=/users/mypc/test/etc/one.json
PropertiesHelper.java:
public String GET_FILE_ONE = "file1";
private static String one;
public String getJsonFile(){
one = config.getProperty(this.GET_FILE_ONE);
return one;
}
JsonReader.java:
private static PropertiesHelper helper;
final String GET_FILE_ONE = helper.getJsonFile();
public String readJson(){
String everything = "";
try(BufferedReader br = new BufferedReader(new FileReader(GET_FILE_ONE))) {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
sb.append(System.lineSeparator());
line = br.readLine();
}
everything = sb.toString();
logger.debug("Everything: " + everything);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
logger.debug("line: " + everything);
return everything;
}
我过去做过类似的事情,但这次我得到了 NullPointerException。我已经盯着这个看了一段时间,看不出有什么问题。我在属性文件中设置文件路径的方式有问题还是我错过了其他什么?
【问题讨论】:
-
添加异常消息,以便我们更好地了解正在发生的事情。如果未找到文件,则应抛出 FileNotFound 异常,而不是 NPE。所以我认为你的问题在其他地方。
-
我发现了问题。你的
PropertiesHelper helper永远不会被创建。添加PropertiesHelper helper = new PropertiesHelper(); -
另外,谁对这个问题投了反对票;这是不合理的。即使解决方案很简单,问题的格式也很好。
-
啊,就是这样。干杯。
标签: nullpointerexception properties-file