查看Java教程,似乎在声明扫描程序时必须包装多层对象,例如http://docs.oracle.com/javase/tutorial/essential/io/scanning.html
s = new Scanner(new BufferedReader(new FileReader("xanadu.txt")));
同时包含BufferedReader
和FileReader
。但是,如果我从System.in
阅读,我是否需要这样做是否有任何好处?这两个选项的行为有何不同?
Scanner s = new Scanner(new BufferedReader(new InputStreamReader(
System.in)));
VS
Scanner s = new Scanner(System.in);
答案 0 :(得分:1)
缓冲部分肯定是不同的。请在此处阅读有关IO缓冲的更多信息:http://docs.oracle.com/javase/tutorial/essential/io/buffers.html
答案 1 :(得分:1)
差异在于效率。如果使用得当BufferedReader
,则可以防止从文件读取的字节转换为字符然后返回。因此建议使用BufferedReader
。
此外,您可以指定缓冲区大小,非常方便。