繁体   English   中英

是否需要BufferedReader才能读取文件?

[英]Is BufferedReader needed to read from file?

这段代码Reader br = new BufferedReader(new FileReader(new File("large_file.txt")))读取整个文件一个字符。 是真的需要BufferedReader还是FileReader和OS磁盘缓存可以很好地进行缓冲?

UPD。 在配备SSD和4Gb RAM的Mac Mini上进行了一些测试。 该文件的格式类似于由手写FSM解析器解析的CSV。 对于小型(50Mb)和大型(1Gb)文件,使用BufferedReader大约快两倍。

测量它。 从某种程度上来说,您是对的:虽然有冗余,但是BufferedReader仍然可以加快速度,特别是对于大型文件。 一个因素是拨打本地电话的次数较少。

习惯上,缓冲区的大小是2的幂,因此OS缓冲区的大小会更好。 另外,我不要使用128 B这样的小尺寸。

或者,可以使用内存映射的I / O ByteBuffer

关于API(尽管在您的情况下可能不适用):

Path path = Paths.get("large_file.txt");

byte[] content = Files.readAllBytes(path);
String text = new String(content, StandardCharsets.UTF_8);

要么

List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM