我正在查看我正在测试的Properties
文件,我意识到每次执行包含Properties.store()
和:
等字符的/
值时,都会收到反斜杠,但我希望我的属性文件被其他非Java编写的程序读取(因此它们不会使用Properties
库)并且这些反斜杠会导致它们出现问题。有没有办法保存文件没有那些?
我尝试构建此函数,该函数在保存Properties
文件后调用:
private void replaceInFile(File file) throws IOException {
File tmpFile = new File("/sdcard/test.prop");
FileWriter fw = new FileWriter(tmpFile);
Reader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
while (br.ready()) {
fw.write(br.readLine().replaceAll("\\", "") + "\n");
}
fw.close();
br.close();
fr.close();
}
但是在调用函数时我遇到了这个错误:
02-03 13:05:34.757:E / AndroidRuntime(15558):java.util.regex.PatternSyntaxException:索引1附近的语法错误U_REGEX_BAD_ESCAPE_SEQUENCE:
\
^
答案 0 :(得分:6)
这些是特殊字符。他们必须用斜线逃脱。
=
和:
是将键与值分开的符号。如果您有foo=bar=baz
怎么办?还是foo:bar:baz
?哪个是关键,哪个是值
如果要强制执行不同的规则,请实施自己的机制,不要使用java.util.Properties
。有关完整的规则集,请参阅Properties.load(..)
您可以在存储属性后,1。读取字符串2.替换转义字符。 3.将新字符串写入文件。