Files.lines()
Читает файл лениво — как поток строк, не загружая его в память целиком.
Доступно с: Java 8
Синтаксис
static Stream<String> lines(Path path) throws IOExceptionПараметры
| Параметр | Тип | Описание |
|---|---|---|
| path | Path | Путь к файлу. |
Возвращаемое значение
Stream<String>Поток строк; его нужно закрыть.
Примеры
Подсчёт строк с ошибками в логе; try с ресурсами закрывает файл:
void main() throws IOException {
Path log = Path.of("app.log");
Files.writeString(log, "INFO start\nERROR disk\nINFO ok\nERROR net\n");
try (Stream<String> lines = Files.lines(log)) {
long errors = lines.filter(line -> line.startsWith("ERROR")).count();
IO.println(errors);
}
Files.delete(log);
}Результат:
2Примечания
Поток держит файл открытым, поэтому его объявляют в try (...). Без закрытия файл может остаться заблокированным (особенно в Windows), и Files.delete() не сработает.
См. также
- Files.readAllLines() — Читает текстовый файл в список строк.
- BufferedReader — Читает текст построчно с буферизацией — классический способ обработки больших файлов.
- try / catch / finally — Перехватывает исключения; finally выполняется всегда, а try с ресурсами сам их закрывает.
Вопросы и ответы по теме
В учебнике
- Чтение и запись файлов — Чтение и запись текстовых файлов в Java — Files.writeString, readString, readAllLines, write, дозапись в конец, Files.lines и буферизованные потоки.