[英]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.