Заменить содержимое файла определенными строковыми данными, которые содержат специальные символы через Java

Я нашел много способов заменить содержимое отдельных файловых строк с помощью Java, и оно работало хорошо для определенных данных. Когда строка содержит специальные символы, IOUtils.write() Метод не может заменить этот контент. Я использую последнюю версию Java 1.8. Тот же метод работает нормально, если я использую простые замены, такие как replaceAll FAILED to PASSED. Например,

Фактическое содержание файла:

23/350 | (PASSED) com.yahoo.getMail_01() | 11.21
23/350 | (FAILED) com.yahoo.getMail_02() | 11.22
23/350 | (PASSED) com.yahoo.getMail_03() | 11.23

Ожидаемое содержимое файла:

23/350 | (PASSED) com.yahoo.getMail_01() | 11.21
23/350 | (PASSED) com.yahoo.getMail_02() | 11.22
23/350 | (PASSED) com.yahoo.getMail_03() | 11.23

Пробный код:

try {
    content = IOUtils.toString(new FileInputStream(sFilePath), Charset.forName("UTF-8"));
} catch (FileNotFoundException e1) {
    e1.printStackTrace();
} catch (IOException e1) {
    e1.printStackTrace();
}

// Here yahooGetMailPath value can be com.yahoo.getMail_02()
// Replacing PASSED to FAILED is showing just as an example.
// (PASSED) can be anything else too because its dynamic value.
content = content.replaceAll(
        "(PASSED) " + yahooGetMailPath,
        "(FAILED) " + yahooGetMailPath);

try {
    IOUtils.write(content, new FileOutputStream(sFilePath), Charset.forName("UTF-8"));
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

0 ответов

Другие вопросы по тегам