使用Properties无法写入配置文件,求解

NewFile.java

private File configurationFile;

public NewFile(File file){
    this.configurationFile = file; 
}

public void newFile() throws IOException{
     if (!configurationFile.exists())
         configurationFile.createNewFile();
    
}

Configuration.java

private File configurationFile;
private Properties pro;
private FileInputStream input;
private FileOutputStream  output;
int count = 0;

public Configuration(File configurationFile, Properties pro, FileInputStream input, FileOutputStream output){
    this.configurationFile = configurationFile;
    this.pro = pro;
    this.input = input;
    this.output = output;
}

public void write() throws IOException{
    pro.load(input);
    
    String value = pro.getProperty("name");
    if (value != null){
        count = Integer.parseInt(value);
    }
    count++;
    
    pro.setProperty("name", count + "");
    pro.store(output, "");
    
    input.close();
    output.close();
}

Main.java

public static void main(String[] args){
    Configuration config = null;
    File configFile = null;
    FileInputStream input = null;
    FileOutputStream output = null;
    Properties pro = null;
    NewFile newFile = null;
    
    try{
        configFile = new File("info.ini");
        newFile = new NewFile(configFile);
        newFile.newFile();
        input = new FileInputStream(configFile);
        output = new FileOutputStream(configFile);
        pro = new Properties();
        config = new Configuration(configFile, pro, input, output);
        config.write();    
    }catch(IOException e){
        e.printStackTrace();
    }finally{
        if(input != null){
            try{
                input.close();
            }catch(IOException e){
                e.printStackTrace();
            }
        }
        if (output != null){
            try{
                output.close();
            }catch(IOException e){
                e.printStackTrace();
            }
        }
    }
}

我测试了一下代码,发现

if (value != null){
        count = Integer.parseInt(value);
    }

没有执行,但是不知道为什么,求解

阅读 3.2k
2 个回答

你把配置文件后缀改成properties试试

只是创建了空的文件info.ini,

String value = pro.getProperty("name");//value为null所以不执行if里面的代码
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题