从Properties文件中读取文件路径的问题

时间:2012-06-27 01:02:50

标签: java properties

我正在开发一个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编写我的属性文件。


结语:所以这是我关于Stack Overflow的第一篇文章,我已经回答了我自己的问题,但我决定无论如何都希望发布一些人(或许是一些人工自然语言处理智能) )可能会发现它有用(或有启发性)。此外,我很好奇人们可能会回复的任何想法或建议。 TL; DR?谢谢你的阅读!

2 个答案:

答案 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()将读取的格式编写属性,因此它将负责任何需要进行的按摩。