Java – 将文件位置写入属性文件

我正在将FILEPATH参数写入属性文件,如下所示。

String newFilePath = txtFilepath.getText(); Properties prop = new Properties(); java.io.File propFile = new File("src/com/app/tool/properties/settings.properties"); prop.setProperty("FILEPATH", newFilePath); System.out.println("newFilePath "+newFilePath); try { prop.store(new FileOutputStream(propFile), "New File location"); } catch (IOException ex) { ex.printStackTrace(); } 

Filepath是D:\ filelog.txt

在写作时,控制台打印出像…

 newFilePath D:\filelog.txt 

但是当我打开属性文件时,内容就像..

 FILEPATH=D\:\\filelog.txt. 

有人建议我,我真的在这里(我)在这里吃什么..?

只需调用prop.get("FILEPATH") 。 你会看到你收到“D:\ filelog.txt”,就像你把它放进去一样。

在属性文件中, :具有含义。

 key = value key: value 

两者都有效。 因此,在写入属性文件时必须进行转义。 甚至\需要逃避。 但是当您在控制台上显示它们时,将识别转义,并正确显示值。

如果您看到Properties类的store()方法的文档

此属性表中的每个条目都被写出,每行一个。 对于每个条目,写入密钥字符串,然后是ASCII =,然后是关联的元素字符串。 检查键和元素字符串的每个字符以查看它是否应该呈现为转义序列。 ASCII字符\,制表符,换页符,换行符和回车符分别写为\,\ t,\ f \ n和\ r \ n。 小于\ u0020且字符大于\ u007E的字符将写为\ uxxxx,表示相应的hex值xxxx。 对于键,所有空格字符都使用前面的\字符写入。 对于元素,前导空格字符,但不是嵌入或尾随空格字符,使用前面的\字符编写。 键和元素字符#,!,=和:使用前面的反斜杠写入,以确保它们已正确加载。

注意: –如果您使用Properties来读取属性文件(它将处理转义),这应该不是问题,但如果您像普通文本文件一样读取属性文件(除非你出去,否则不应该这样做你的想法),那将是一个问题。

反斜杠\是一个转义字符,它被静默地删除而不是另一个\

冒号:是一个特殊的角色,必须通过\逃脱。

检查文档

http://commons.apache.org/proper/commons-configuration/userguide/howto_properties.html