测试文件是否存在但获取空指针异常

时间:2014-10-22 14:34:09

标签: java nullpointerexception

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

1 个答案:

答案 0 :(得分:2)

问题在于ifelse分支中的语句初始化了一个名为configFile的新变量,而不是使用该字段。删除File应该可以解决问题,例如:

if(Utils.isWindows()){
    configFile = new File("C:/config.properties");
} else {
   configFile = new File("/config.properties");
}