public class ReadConfig {
private File configFile;
public boolean testConfig(){
if(Utils.isWindows()){
File configFile = new File("C:/config.properties");
}
else{
File configFile = new File("/config.properties");
}
if(configFile.exists() && !configFile.isDirectory()){
System.out.println(configFile + "found!");
return true;
}
else{
try {
configFile.createNewFile();
System.out.println(configFile + "created!");
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
}
}
这会在以下行返回零点异常
if(configFile.exists() && !configFile.isDirectory()){
在我看来它应该返回false,为什么会抛出NullPointerException
?
答案 0 :(得分:2)
问题在于if
和else
分支中的语句初始化了一个名为configFile
的新变量,而不是使用该字段。删除File
应该可以解决问题,例如:
if(Utils.isWindows()){
configFile = new File("C:/config.properties");
} else {
configFile = new File("/config.properties");
}