Чтение и запись файла в Java с сохранением специальных символов - PullRequest
0 голосов
/ 01 ноября 2018

После чтения и записи файла маркеры заменяются символическим нечитаемым текстом "�". Вот код:

String str = FileUtils.readFileToString(new File(sourcePath), "UTF-8");         
nextTextFile.append(redactStrings(str, redactedStrings));
FileUtils.writeStringToFile(new File(targetPath), nextTextFile.toString());

Ссылка на образец файла

сгенерированный файл с забавными персонажами

1 Ответ

0 голосов
/ 01 ноября 2018

Я проверил это в Windows, и если исходный файл закодирован в UTF-8, следующий код выдаст желаемый вывод на консоль и в файл, который затем также кодируется в UTF-8, используя из java.nio:

public static void main(String[] args) {
    Path inPath = Paths.get(sourcePath);
    Path outPath = Paths.get(targetPath);

    try {
        List<String> lines = Files.readAllLines(inPath, StandardCharsets.UTF_8);

        lines.forEach(line -> {
            System.out.println(line);
        });

        Files.write(outPath, lines, StandardCharsets.UTF_8);

    } catch (IOException e) {
        e.printStackTrace();
    }
}

Обратите внимание, что исходный файл должен быть закодирован в UTF-8, в противном случае это может привести к IOException, указывающему что-то вроде Input length = 1. Поиграйте с StandardCharsets, если он не соответствует вашим требованиям, или убедитесь, что кодировка исходного файла UTF-8 .

...