我目前正在嘗試從僅有文本的文件中讀取行。我發現在另一個stackoverflow(Reading a plain text file in Java),你可以使用Files.lines(..)。forEach(..) 但是我實際上不知道如何使用每個函數來逐行閱讀文本,任何人都知道在哪裏尋找或如何去做?如何使用Files.lines(...)forEach(...)讀取文件?
回答
Files.lines(Path)
預計Path
參數並返回Stream<String>
。 Stream#forEach(Consumer)
需要Consumer
參數。因此請調用該方法,並將其傳遞給Consumer
。該對象將不得不被執行,以便爲每條線路做你想做的事情。
這是Java 8,因此您可以使用lambda表達式或方法引用來提供Consumer
參數。 test.txt的
樣品含量
Hello
Stack
Over
Flow
com
代碼從使用lines()
和forEach()
方法這個文本文件中讀取。
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...
}
}
}
您可以使用方法引用:'System.out :: println',它仍然會被轉換爲相同的字節碼。 –
還有一點:不應該將'Stream'存儲爲變量,因爲它可能會讓一些讀者使用它兩次或更多次,這是被禁止的。相反,你可以用'readAllLines'將它保存到'List'中,然後在這個列表中使用'stream()'方法。 –
爲流使用try-with-resources以確保它自動關閉: 'try(流
隨着的Java 8,如果文件存在於classpath
:
Files.lines(Paths.get(ClassLoader.getSystemResource("input.txt")
.toURI())).forEach(System.out::println);
我已經創建了一個樣本,可以使用流過濾/
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());
}
}
樣品輸入。文本。
SELECT Every thing
Delete Every thing
Delete Every thing
Delete Every thing
Delete Every thing
Delete Every thing
Delete Every thing
- 1. 哪個Files.readAllLines或Files.lines方法對文件讀取更快?
- 2. 有沒有辦法在Java中讀取使用Files.lines系列化文件8
- 3. 如何從文本文件讀取時停止foreach()循環?
- 4. 如何使用textscan讀取文件?
- 5. 如何使用luacom讀取xlsx文件?
- 6. 如何使用fgets從文件讀取?
- 7. 如何使用AJAX讀取excel文件?
- 8. 如何使用asp.net讀取.tsv文件
- 9. 如何使用Python讀取此文件?
- 10. 如何使用PHP讀取PDF文件?
- 11. 如何使用pyspark讀取orc文件
- 12. 如何使用EMF讀取XML文件?
- 13. 如何使用servlet讀取xml文件?
- 14. 使用C#如何讀取XML文件
- 15. 如何使用Dojo讀取JSON文件
- 16. 如何使用javascript讀取epub文件
- 17. 如何使用J2ME讀取.xls文件
- 18. 如何使用C#讀取LAS文件
- 19. 如何使用LabVIEW讀取CSV文件?
- 20. 如何使用javax.lang.model讀取文件?
- 21. 如何讀取XML文件使用javascript
- 22. NPOI:如何使用NPOI讀取文件
- 23. 如何使用php讀取psd文件
- 24. 如何使用slf4j讀取.properties文件?
- 25. 如何使用QTP讀取* .log文件?
- 26. 如何使用TIKA讀取大文件?
- 27. 如何使用fgetc來讀取文件
- 28. 如何使用F#讀取.docx文件
- 29. 如何使用C#讀取CSV文件
- 30. 如何使用PHPpowerpoint讀取PPT文件?
這種方法已經被讀取文件的每一行,你可以存儲行的'String'變量和做其他事吧......呃 –
,你應該閱讀有關Java 8和Lambda表達式;特別是在這裏,關於'Consumer'和單抽象方法的概念 – fge