Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从属性文件读取文件路径时出现问题_Java_Properties - Fatal编程技术网

Java 从属性文件读取文件路径时出现问题

Java 从属性文件读取文件路径时出现问题,java,properties,Java,Properties,我正在开发一个swing应用程序,它允许用户查看一组(大部分是本地存储的)文件。我可以将文件列表(以及其他首选项)作为文本存储在属性文件中,但当我尝试使用 myProperties.getProperty(“文件”) 它会丢弃文本中的一些“\”。我确认,写入属性文件时如下所示: myPrintWriter.println(“File=“+myFile.toString().replaceAll”(“\\\\\”,“/”) 或者这个: myPrintWriter.println(“File=“+m

我正在开发一个swing应用程序,它允许用户查看一组(大部分是本地存储的)文件。我可以将文件列表(以及其他首选项)作为文本存储在属性文件中,但当我尝试使用

myProperties.getProperty(“文件”)

它会丢弃文本中的一些“\”。我确认,写入属性文件时如下所示:

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

或者这个:

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

将允许
getProperty()
更像我预期的那样工作,但我不喜欢在API中没有解释的情况下将数据转换为Java特定格式,所以我决定在堆栈溢出时编写它


但当我在帖子中说到这一点时,我开始感到尴尬;我甚至没有查阅
Java.util.Properties
(与JDK一起分发)的Java源代码,就要发布关于堆栈溢出的文章了。我发现
Properties.load()
的Javadoc注释表明这是一个设计决策,例如,允许属性值包含换行符。我想如果我发现我需要语言独立性,我会考虑用XML编写属性文件



结语:这是我关于堆栈溢出的第一篇文章,我已经回答了我自己的问题,但我决定无论如何发布它,希望有人(或者,可能是一些人工自然语言处理智能)会发现它有用(或者有启发性)。另外,我很好奇人们可能会在回复中提出什么想法或建议。TL;博士谢谢你的阅读

如果适用,可以使用双反斜杠-
c:\\test\\test.txt

Properties props = new Properties();
props.setProperty("test", "c:\\test\\test.txt");
System.out.println(props.getProperty("test"));
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"));
Properties props = new Properties();
props.setProperty("test", "c:/test/test.txt");
System.out.println(props.getProperty("test")); 

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

是的,这正是我决定要做的。正如我在文章中提到的,在属性类的Javadoc中解释了这种行为(不是在getProperty()中,而是在load()中的“上游”)!只有约15个方法特定于属性,我真的应该通读方法名称/签名。。。