Java 8 Stream Files
Данная статья написана командой Vertex Academy. Это одна из статей из нашего Учебника по Java 8. Надеемся, что данная статья Вам будет полезна. Приятного прочтения!
В этой статье мы рассмотрим считывание данных из файлов с помощью Stream-ов в Java.
1. Введение
Stream API - новый способ взаимодействия с данными, представляя их в виде конечного потока данных.
В Java 8 стало возможным создать Stream из файла, но об этом немного позже:)
Для примеров понадобится файл с данными:
1 2 3 4 |
линия еще одна линия и еще одна линия линий мало не бывает |
Поэтому создайте file.txt с этими данными.
2. Buffered Reader
Одним из старых способов считывания данных построчно есть BufferedReader
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public static void main(String[] args) { List<String> lines = new ArrayList<>(); Path path = Paths.get("file.txt"); try (BufferedReader reader = Files.newBufferedReader(path)) { String line; while ((line = reader.readLine()) != null) lines.add(line); } catch (IOException ignored) { } System.out.println(lines); //output [линия, еще одна линия, и еще одна линия, линий мало не бывает] } |
Способ рабочий, но скучный.
3. Scanner
Еще одним вариантом считывания есть Scanner
1 2 3 4 5 6 7 8 9 10 11 12 |
public static void main(String[] args) { List<String> lines = new ArrayList<>(); Path path = Paths.get("file.txt"); try (Scanner scanner = new Scanner(path)) { while (scanner.hasNext()) lines.add(scanner.nextLine()); } catch (IOException ignored) { } System.out.println(lines); //output [линия, еще одна линия, и еще одна линия, линий мало не бывает] } |
4. Stream
В Java 8 в класс Files добавили метод lines() который возвращает Stream из строк
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public static void main(String[] args) { List<String> lines = new ArrayList<>(); Path path = Paths.get("file.txt"); try (Stream<String> lineStream = Files.lines(path)) { lines = lineStream.collect(Collectors.toList()); } catch (IOException ignored) { } System.out.println(lines); //output [линия, еще одна линия, и еще одна линия, линий мало не бывает] } |
В Java 8 метод lines() так же добавили в класс BufferedReader
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public static void main(String[] args) { List<String> lines = new ArrayList<>(); Path path = Paths.get("file.txt"); try (Stream<String> lineStream = Files.newBufferedReader(path).lines()) { lines = lineStream.collect(Collectors.toList()); } catch (IOException ignored) { } System.out.println(lines); //output [линия, еще одна линия, и еще одна линия, линий мало не бывает] } |
Что также удобно, сокращает код и повышает читаемость кода.
В Java 8 есть еще множество полезных нововведений, которые можно найти тут
Надеемся - наша статья была Вам полезна. Есть возможность записаться на наши курсы по Java в Киеве. Детальную информацию смотрите у нас на сайте.