Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否需要BufferedReader从文件中读取?_Java - Fatal编程技术网

Java 是否需要BufferedReader从文件中读取?

Java 是否需要BufferedReader从文件中读取?,java,Java,这是密码 Reader br=new BufferedReader(new FileReader(新文件(“large_File.txt”))一次读取一个字符的整个文件。是否确实需要BufferedReader,或者FileReader和操作系统磁盘缓存可以很好地进行缓冲 UPD。在带有SSD和4Gb内存的Mac Mini上做了一个小测试。该文件类似于手工编写的FSM解析器解析的CSV。对于小文件(50Mb)和大文件(1Gb),使用BufferedReader大约快两倍。在某种程度上,您是对的:

这是密码
Reader br=new BufferedReader(new FileReader(新文件(“large_File.txt”))
一次读取一个字符的整个文件。是否确实需要
BufferedReader
,或者
FileReader
和操作系统磁盘缓存可以很好地进行缓冲


UPD。在带有SSD和4Gb内存的Mac Mini上做了一个小测试。该文件类似于手工编写的FSM解析器解析的CSV。对于小文件(50Mb)和大文件(1Gb),使用BufferedReader大约快两倍。在某种程度上,您是对的:存在冗余,但BufferedReader仍有助于加快速度,特别是对于大型文件。其中一个因素是本地调用较少

此外,按照惯例,缓冲区大小是2的幂,因此操作系统缓冲区大小将更适合。此外,我会避免像128B这样的小尺寸

或者,可以使用内存映射I/O,即
字节缓冲区

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

List lines=Files.readAllLines(路径,StandardCharsets.UTF_8);

基本上不需要它,但您也可以读取单个字符。但是,这是2015年,因此请改用
Files.newbufferedeader()
——并指定编码。
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);