3

我正在开发一个 Swing 应用程序,它允许用户查看(主要是本地存储的)文件集。我可以将文件列表(以及其他首选项)作为文本存储在属性文件中,但是当我尝试将文件值拉回时,使用

myProperties.getProperty("File")

它会丢弃文本中的一些“\”。我确认写入属性文件是这样的:

myPrintWriter.println("File = " + myFile.toString().replaceAll("\\\\", "/"))

或这个:

myPrintWriter.println("File = " + myFile.toString().replaceAll("\\\\", "\\\\\\\\"))

将允许getProperty()像我预期的那样工作,但我不喜欢在没有 API 解释的情况下将我的数据转换为 Java 特定格式,所以我决定将它写在 Stack Overflow 上。


但是当我在帖子中达到这一点时,我开始感到尴尬;我正要在 Stack Overflow 上发帖,甚至没有咨询 Java 源代码java.util.Properties(随 JDK 一起分发)。我发现 Javadoc 注释Properties.load()表明这是一个设计决策,例如,它允许 Properties 值包含换行符。如果我发现我需要这种语言独立性,我想我会考虑用 XML 编写我的属性文件。


结语:所以这是我在 Stack Overflow 上的第一篇文章,我已经回答了我自己的问题,但我还是决定发布它,希望有人(或者,也许是一些人工的自然语言处理智能)可以找到它有用(或有启发性)。另外,我很好奇人们可能会在回复中发布的任何想法或建议。TL;博士?谢谢阅读!

4

2 回答 2

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")); 
于 2012-06-27T01:23:23.087 回答
1

你可以Properties.store()用来写出你的属性。store()被记录为以可以读取的格式写入属性load(),因此它将处理需要完成的任何按摩。

于 2012-06-27T01:35:00.507 回答