我已经4年没有写Java了,所以请原谅任何“新手”错误。
我需要一个属性文件来存储我的应用程序的一些简单数据。应用程序本身的数据不会驻留在此处,但我将存储信息,如上次使用数据存储的文件路径、其他设置等。
我设法连接到属性文件,该文件存在于尝试连接到它的类文件的同一包中,我可以读取该文件,但我无法将更改写回文件中。我相当确定我的代码有效(至少没有抛出任何错误),但是在Netbeans中运行应用程序后,更改在文件本身中未反映出来。
在上面的图像中,您可以看到问题的mainProperties.properties文件和尝试调用它的类(prefManagement.java)。因此,这是加载文件的代码:
Properties mainFile = new Properties();
try {
mainFile.load(prefManagement.class.getClass().getResourceAsStream("/numberAdditionUI/mainProperties.properties"));
} catch (IOException a) {
System.out.println("Couldn't find/load file!");
}
这个可以正常工作,我可以检查并确认一个现有的关键字(defaultXMLPath)。
我要添加到这个文件中的代码是:
String confirmKey = "defaultXMLPath2";
String propKey = mainFile.getProperty(confirmKey);
if (propKey == null) {
// Key is not present so enter the key into the properties file
mainFile.setProperty(confirmKey, "testtest");
try{
FileOutputStream fos = new FileOutputStream("mainProperties.properties");
mainFile.store(fos, "testtest3");
fos.flush();
}catch(FileNotFoundException e ){
System.out.println("Couldn't find/load file3!");
}catch(IOException b){
System.out.println("Couldn't find/load file4!");
}
} else {
// Throw error saying key already exists
System.out.println("Key " + confirmKey + " already exists.");
}
如我之前提到的,一切都没有出现错误,我可以尝试添加现有密钥并抛出预期的错误。但是当尝试添加新的键/值对后,它不会在属性文件中显示出来。为什么?
user.home
目录中,确切的位置取决于平台,例如,在Linux下,它可能是{user.home}/.YouAppName/...
,在Windows下,它可能是{user.home}/AppData/Roaming/YouAppName/...
。 - MadProgrammer