gpt4 book ai didi

Java 8 的 Files.lines() : Performance concern for very long line

转载 作者:行者123 更新时间:2023-12-01 07:47:55 25 4
gpt4 key购买 nike

Java 8 的流 API 非常方便并且受到欢迎。对于文件 I/O,我发现提供了两个 API 来生成流输出:Files.lines(path)bufferedReader.lines()

不过,我没有找到提供用于读取文件的固定大小缓冲区流的流 API。

我关心的是:如果文件的行很长,例如一个 4G​​B 文件只有一行,这些基于行的 API 效率不是很低吗?

基于行的读取器至少需要 4G​​B 内存来保存该行。与固定大小的缓冲区读取器 (fileInputStream.read(byte[] b, int off, int len)) 相比,后者最多占用内存的缓冲区大小。

如果上述问题属实,是否有更高效的文件 I/O API Stream API?

最佳答案

如果您有一个只有一行的 4G​​B 文本文件,并且您正在“逐行”处理它,那么您在编程中犯了一个严重错误,因为您不理解数据正在与您合作。

当您需要使用 CSV 或其他此类格式的数据进行简单工作并且行大小易于管理时,它们是方便的方法。

具有单行的 4G​​B 文本文件的现实示例是不带换行符的 XML 文件。您可以使用流式 XML 解析器来读取该内容,而不是推出自己的逐行读取的解决方案。

关于Java 8 的 Files.lines() : Performance concern for very long line,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46680492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com