我正在开发一个swing应用程序,允许用户查看(主要是本地存储的)文件集。我能够将文件列表(以及其他首选项)存储为属性文件中的文本,但是当我尝试将文件值拉回时,使用
myProperties.getProperty("File")
它会丢弃文本中的部分。我确认写入这样的属性文件:
myPrintWriter.println("File = " + myFile.toString().replaceAll("\\\\", "/"))
或者这个:
myPrintWriter.println("File = " + myFile.toString().replaceAll("\\\\", "\\\\\\\\"))
允许getProperty()
更像我预期的工作但我不喜欢在没有API解释的情况下将我的数据转换为Java特定的格式,所以我决定在Stack Overflow上编写它。
但是当我在我的帖子中达到这一点时开始感到尴尬;我即将发布Stack Overflow,甚至没有查阅java.util.Properties
的Java源代码(随JDK一起发布)。我发现Properties.load()
的Javadoc注释表明这是一个设计决策,例如,允许属性值包含换行符。我想如果我发现我需要语言独立性,我会考虑用XML编写我的属性文件。
答案 0 :(得分:2)
如果适用,您可以使用双反斜杠 - c:\\test\\test.txt
:
Properties props = new Properties();
props.setProperty("test", "c:\\test\\test.txt");
System.out.println(props.getProperty("test"));
在Windows系统上,您还可以使用正斜杠 - c:/test/test.txt
:
Properties props = new Properties();
props.setProperty("test", "c:/test/test.txt");
System.out.println(props.getProperty("test"));
答案 1 :(得分:1)
您可以使用Properties.store()
来写出您的媒体资源。 store()
被记录为以load()
将读取的格式编写属性,因此它将负责任何需要进行的按摩。