Учу сейчас стримы из Java 8 и JAVA 9. Проблема такая, как вначале пропустить строки файла после позиции END OF HEADER(предпоследняя строка файла), а затем считать каждое значение(оставшиеся цифры) и возможно ли мою задачу сделать на стримах?.
2.10 N: GPS NAV DATA RINEX VERSION / TYPE
teqc 2017Feb10 UNAVCO Archive Ops 20170418 19:33:16UTCPGM / RUN BY / DATE
9.2160D+04 -1.1469D+05 -1.3107D+05 7.2090D+05 ION BETA
9.313225746155D-10 3.552713678801D-15 233472 1930 DELTA-UTC: A0,A1,T,W
END OF HEADER
29 17 1 1 2 0 0.0 6.356909871101D-04-2.046363078989D-12 0.000000000000D+00
Начал делать так:
try {
Files.lines(Paths.get("src/main/java/ab010010.17n"), StandardCharsets.UTF_8).// дальше что применять и множества методов?;
} catch (IOException e) {
e.printStackTrace();
}
Ответ
В Java9 появился метод потока dropWhile, серьёзно облегчающий вашу задачу:
Files.lines(Paths.get("src/main/java/ab010010.17n"), StandardCharsets.UTF_8)
.dropWhile(s -> !s.contains("END OF HEADER"))
.skip(1)
.map(s -> s.split(" "))
.flatMap(Arrays::stream)
.filter(i -> !i.isEmpty())
.forEach(System.out::println);
Комментариев нет:
Отправить комментарий