Метод lines
Метод lines класса Files читает все строки
из указанного файла и возвращает их в виде потока
Stream<String>. Первым параметром метод принимает
путь к файлу в виде объекта Path, вторым
параметром можно передать кодировку Charset.
Если кодировка не указана, используется UTF-8. Метод
удобен тем, что позволяет обрабатывать строки файла
последовательно, не загружая весь файл в память
целиком, что особенно важно при работе с большими
файлами.
Синтаксис
Files.lines(path, [charset])
Пример
Давайте создадим файл, запишем в него несколько строк
и прочитаем их с помощью метода lines:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.stream.Stream;
public class Main
{
public static void main(String[] args) throws IOException
{
Path path = Files.createTempFile("test", ".txt");
Files.write(path, List.of("abcde", "12345", "hello"));
try (Stream<String> stream = Files.lines(path))
{
stream.forEach(System.out::println);
}
}
}
Результат выполнения кода:
"abcde"
"12345"
"hello"
Пример
Давайте соберем все строки файла в список с помощью
метода collect:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main
{
public static void main(String[] args) throws IOException
{
Path path = Files.createTempFile("test", ".txt");
Files.write(path, List.of("abcde", "12345", "hello"));
try (Stream<String> stream = Files.lines(path))
{
List<String> res = stream.collect(Collectors.toList());
System.out.println(res);
}
}
}
Результат выполнения кода:
[abcde, 12345, hello]
Пример
Давайте подсчитаем количество строк в файле:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.stream.Stream;
public class Main
{
public static void main(String[] args) throws IOException
{
Path path = Files.createTempFile("test", ".txt");
Files.write(path, List.of("abcde", "12345", "hello"));
try (Stream<String> stream = Files.lines(path))
{
long res = stream.count();
System.out.println(res);
}
}
}
Результат выполнения кода:
3
Смотрите также
-
метод
readAllLines,
который читает все строки файла в список -
метод
readString,
который читает все содержимое файла в строку -
метод
newBufferedReader,
который открывает файл для построчного чтения -
метод
write,
который записывает строки в файл