【问题标题】:Declaring scanner to read system.in声明扫描仪读取 system.in
【发布时间】:2014-10-07 04:05:44
【问题描述】:

查看 Java 教程,您似乎必须在声明扫描仪时包装多层对象,例如http://docs.oracle.com/javase/tutorial/essential/io/scanning.html

s = new Scanner(new BufferedReader(new FileReader("xanadu.txt")));

同时拥有BufferedReaderFileReader。但是,如果我从System.in 阅读,我需要/这样做有什么好处吗?这两个选项的行为是否不同?

Scanner s = new Scanner(new BufferedReader(new InputStreamReader(
            System.in)));

Scanner s = new Scanner(System.in);

【问题讨论】:

  • 虽然缓冲可能有助于处理大文件,但我认为将其与键盘输入一起使用没有任何优势 (System.in)。为了防止将来出现问题,当为System.in 打开Scanner 时,要么在代码的最后关闭它(在读取所有内容之后),要么根本不关闭。
  • System.in 也可以使用重定向来自文件

标签: java java.util.scanner system.in


【解决方案1】:

区别在于效率。如果使用得当,BufferedReader 可以防止从文件中读取的字节转换为字符然后返回。所以推荐使用BufferedReader

另外,还可以指定缓冲区大小,非常方便。

【讨论】:

    【解决方案2】:

    缓冲部分肯定是不同的。请在此处阅读有关 IO 缓冲的更多信息:http://docs.oracle.com/javase/tutorial/essential/io/buffers.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多