2

我正在将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();
    }

文件路径是 D:\filelog.txt

写入时,控制台打印如下..

newFilePath D:\filelog.txt

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

FILEPATH=D\:\\filelog.txt.

任何人都建议我,我真的在这里 m(i)essing ..?

4

3 回答 3

2

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

key = value
key: value

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

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

此属性表中的每个条目都被写出,每行一个。对于每个条目,写入键字符串,然后是 ASCII =,然后是关联的元素字符串。检查键和元素字符串的每个字符以查看是否应将其呈现为转义序列。ASCII 字符 \、制表符、换页符、换行符和回车分别写为 \、\t、\f \n 和 \r。小于 \u0020 的字符和大于 \u007E 的字符被写为 \uxxxx 以获得适当的十六进制值 xxxx。对于键,所有空格字符都写有前面的 \ 字符。对于元素,前导空格字符,而不是嵌入或尾随空格字符,用前面的 \ 字符写入。键和元素字符 #、!、= 和 :

注意:-如果您使用读取属性文件(它会处理转义),这应该不是问题Properties,但是如果您像普通文本文件一样读取属性文件(除非您已经离开,否则您永远不应该这样做你的想法),那么这将是一个问题。

于 2013-10-09T10:21:13.657 回答
0

反斜杠\是一个转义字符,它被默默地插入,后面没有另一个\

冒号:是一个特殊字符,必须用 . 转义\

检查文档

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

于 2013-10-09T10:22:32.540 回答
0

只要打电话prop.get("FILEPATH")。你会看到你得到了“D:\filelog.txt”,就像你把它放进去一样。

于 2013-10-09T10:33:44.420 回答