替换属性文件上的所有反斜杠

时间:2012-02-02 17:14:37

标签: java android file-io properties

我正在查看我正在测试的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:
   \
    ^

1 个答案:

答案 0 :(得分:6)

这些是特殊字符。他们必须用斜线逃脱。

=:是将键与值分开的符号。如果您有foo=bar=baz怎么办?还是foo:bar:baz?哪个是关键,哪个是值

如果要强制执行不同的规则,请实施自己的机制,不要使用java.util.Properties。有关完整的规则集,请参阅Properties.load(..)

您可以在存储属性后,1。读取字符串2.替换转义字符。 3.将新字符串写入文件。