Java 如何将属性对象中的数据保存到文件&x2B;如何将属性格式化文件加载到另一个方法中的属性对象?

Java 如何将属性对象中的数据保存到文件&x2B;如何将属性格式化文件加载到另一个方法中的属性对象?,java,properties,Java,Properties,我想将属性对象中的数据保存到参数中的文件configFile,如下所示: @Override public void saveConfig(Properties config, File configFile) { try { ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(configFile)); os.writeObject(config);

我想将属性对象中的数据保存到参数中的文件
configFile
,如下所示:

@Override
public void saveConfig(Properties config, File configFile) {
    
    try {
        ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(configFile));
        os.writeObject(config);
        os.close();
    }
    catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    catch (IOException e) {
        e.printStackTrace();
    }
    
}
在下一个方法中,我想将格式化的属性
configFile
加载到属性对象并返回它:

@Override
public Properties loadConfig(File configFile) {
    
    Properties prop = new Properties();
    
    try(InputStream input = new FileInputStream(configFile)){
        prop.load(input);
    }
    catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    catch (IOException e) {
        e.printStackTrace();
    }
    return prop;
}
不知何故,JUnit测试向我显示了一个NullPointerExection(注意:这是一个考试)


我在这里缺少什么?

以下示例使用的包应优于
java.io.File
,因为它改进了错误处理。但是,代码也将类似地查找
java.io.File

书写特性
@覆盖
public void saveConfig(属性配置,路径配置文件)引发IOException{
//在文件开头写下的注释;
//'null'表示无注释
字符串注释=。。。
//尝试使用资源在编写完成后立即关闭writer
//java.nio.file.Files.newBufferedWriter​默认情况下,(…)使用UTF-8
try(Writer-Writer=Files.newBufferedWriter(configFile)){
config.store(编写器、注释);
}
}
阅读特性
@覆盖
公共属性loadConfig(路径配置文件)引发IOException{
属性配置=新属性();
//尝试使用资源在阅读完成后立即关闭阅读器
//默认情况下,java.nio.file.Files.newBufferedReader(…)使用UTF-8
try(Reader=Files.newbuffereder(configFile)){
config.load(读卡器);
}
返回配置;
}

您的
saveConfig
正在使用
ObjectOutputStream
,它以二进制编码存储属性对象的内部数据。但是,
loadConfig
尝试将属性作为文本文件加载。您可能应该使用将属性写入文件。还要注意的是,有
store
load
重载,它们具有
Writer
Reader
参数,并且不限于ISO 8859-1编码。请发布代码片段好吗?
if (!config.getProperty("testKey").equals("testValue"))
        fail("sample config data doesn't match read config data!");