如何读取大文件?(java) 流式读取
当文件过大,并且你设置的 内存过下或者无法满足文件内存,一次性读取就会出现OOM内存溢出。
当这时可以使用 Files.lines() 方法解决
与 readAllLines 方法返回 List 不同,lines 方法返回的是 Stream。
这,使得我们在需要时可以不断读取、使用文件中的内容,而不是一次性地把所有内容都读 取到内存中,因此避免了 OOM。
LongAdder longAdder = new LongAdder();
IntStream.rangeClosed(1, 10000).forEach(i -> {
try (Stream<String> lines = Files.lines(Paths.get("C:\\Users\\Desktop\\从.java进行运行打包.以及API文档.txt"))) {
lines.forEach(line -> longAdder.increment());
} catch (IOException e) {
e.printStackTrace();
}
});
System.out.println(longAdder.longValue());
当面临大文件读取可能导致内存溢出的问题时,可以使用Java的Files.lines()方法。此方法返回一个Stream,允许逐步处理文件内容而非一次性加载,从而防止OOM。示例代码展示了如何通过Stream遍历并计数大文件中的行数。
913

被折叠的 条评论
为什么被折叠?



