Похоже, вы пытаетесь удалить ^^
из отдельных строк исходного файла. Вы можете решить эту проблему, используя только File.lines
и Stream.map
:
List<String> lines = Files.lines(filePath, StandardCharsets.ISO_8859_1)
.map(line -> {
if (line.charAt(endIndex) == '^' && line.charAt(endIndex + 1) == '^') {
return new StringBuilder(line).delete(endIndex, endIndex + 2).toString();
} else {
return line;
}
})
.collect(Collectors.toList());
Полагаю, это может иметь худшую производительность по сравнению с
new StringBuilder(String.valueOf(Files.readAllLines(...)))
Однако readAllLines считывает все строки в список, но lines
лениво заполняется по мере расходования потока.
В этом случае, если мы используем один большой
StringBuilder
- все данные читаются сначала и обрабатываются позже . Наоборот - в случае File.lines
данные обрабатываются и считываются в одновременно . После того, как последняя строка файла будет прочитана и обработана потоковым конвейером - появится список строк файла с удаленными символами ^^
.