Заменить все обратные косые черты в файле свойств - PullRequest
1 голос
/ 02 февраля 2012

Я смотрел на файл 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: синтаксическая ошибка U_REGEX_BAD_ESCAPE_SEQUENCE рядоминдекс 1:
\
^

1 Ответ

6 голосов
/ 02 февраля 2012

Это специальные символы. Они должны быть отделены косой чертой.

= и : являются символами, которые отделяют ключ от значения. Что делать, если у вас есть foo=bar=baz? Или foo:bar:baz? Какой ключ и какое значение

Если вы хотите применить другие правила, используйте свой собственный механизм и не используйте java.util.Properties. Полный набор правил см. Properties.load(..)

Вы можете, после сохранения свойств, 1. прочитать строку 2. заменить экранированные символы. 3. записать новую строку в файл.

...