Obecnie próbuję odczytać linie z pliku tekstowego, który mam. Znalazłem na innym stackoverflow (Reading a plain text file in Java), że można użyć Files.lines (..). ForEach (..) Jednak nie mogę faktycznie dowiedzieć się, jak korzystać z każdej funkcji, aby przeczytać tekst po linii, Każdy wie gdzie szukać i jak to zrobić?Jak czytać z plików z Files.lines (...). ForEach (...)?
Odpowiedz
Files.lines(Path)
oczekuje argumentu Path
i zwraca wartość Stream<String>
. Stream#forEach(Consumer)
oczekuje argumentu Consumer
. Więc wywołaj metodę, podając ją jako Consumer
. Ten obiekt będzie musiał zostać zaimplementowany, aby zrobić to, co chcesz dla każdej linii.
To jest Java 8, więc możesz użyć wyrażeń lambda lub odwołań do metod, aby podać argument Consumer
.
zawartość Przykładowy Test.txt
Hello
Stack
Over
Flow
com
kod do odczytu z tego pliku tekstowego przy użyciu lines()
i forEach()
metod.
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;
public class FileLambda {
public static void main(String JavaLatte[]) {
Path path = Paths.get("/root/test.txt");
try (Stream<String> lines = Files.lines(path)) {
lines.forEach(s -> System.out.println(s));
} catch (IOException ex) {
// do something or re-throw...
}
}
}
Możesz użyć odwołania do metody:' System.out :: println', nadal byłoby to przetłumaczone na ten sam kod bajtowy. –
I jeszcze jeden punkt: nie powinieneś zapisywać 'Stream' jako zmiennej, ponieważ może to wprowadzać w błąd niektórych czytelników, którzy używają go dwukrotnie lub więcej razy, co jest zabronione. Zamiast tego możesz zapisać go do 'List' za pomocą' readAllLines', a następnie użyć metody 'stream()' na tej liście. –
Użyj try-for-resources dla strumienia, aby zapewnić automatyczne zamknięcie: 'try (Stream
Z Java 8, jeśli plik istnieje w classpath
:
Files.lines(Paths.get(ClassLoader.getSystemResource("input.txt")
.toURI())).forEach(System.out::println);
Stworzyłem próbkę, można użyć Stream filtrować wejście/
public class ReadFileLines {
public static void main(String[] args) throws IOException {
Stream<String> lines = Files.lines(Paths.get("C:/SelfStudy/Input.txt"));
// System.out.println(lines.filter(str -> str.contains("SELECT")).count());
//Stream gets closed once you have run the count method.
System.out.println(lines.parallel().filter(str -> str.contains("Delete")).count());
}
}
Sample .tekst.
SELECT Every thing
Delete Every thing
Delete Every thing
Delete Every thing
Delete Every thing
Delete Every thing
Delete Every thing
- 1. Jak czytać znaczniki plików MP3
- 2. Jak czytać wiersz z pliku w PowerShell
- 3. Jak czytać ze standardowego wejścia z fgetami()?
- 4. Jak czytać z XmlReader bez ruchu przekazuje
- 5. Jak czytać linie z bloków w Kabeja?
- 6. Jak czytać kule z pliku RTF
- 7. jak czytać bajt po bajcie z pliku
- 8. Jak czytać z os.pipe() bez blokowania?
- 9. Tworzenie obiektu z forEach
- 10. php losowego z foreach
- 11. pętla foreach z licznikiem
- 12. Jak czytać app.config unittest projektu, z testu z HostType („Moles”)
- 13. Jak czytać duże pliki z dysku google do gae blobstore
- 14. Java: jak korzystać z BufferedReader czytać specjalną linię
- 15. Jak wyskoczyć z pętli foreach w C#?
- 16. Jak wyjść z foreach po spełnieniu warunku?
- 17. Jak wyjść z pętli foreach w javascript
- 18. Jak korzystać z foreach w fputcsv?
- 19. Jak korzystać z generatorów PHP bez foreach?
- 20. Trwa pętla foreach z Moq
- 21. Foreach z select/z w nawiasach kwadratowych?
- 22. czytać tekst z danej strony, używając PDFBox
- 23. czytać oddzielonych przecinkami wejście z scanf
- 24. Jak czytać plik pikle?
- 25. Shibboleth - Jak czytać atrybuty?
- 26. Jak wstawić licznik do strumienia <String> .forEach()?
- 27. Jak czytać cyrylicę w Unicode w C++?
- 28. Jak korzystać z wielowątkowości Java do odczytu z wielu plików?
- 29. AppSettings z plików niestandardowych
- 30. Jak czytać z pliku tekstowego, znak po znaku w C++
Metoda ta jest już czyta każdy wiersz pliku, można przechowywać wiersz w zmiennej 'String' i zrobić coś innego z nim ... –
Uhm, należy przeczytać o Java 8 i lambdas; konkretnie tutaj, o 'Consumer' i pojęciu pojedynczej abstrakcyjnej metody. – fge