将文件或FileReader与扫描仪一起使用?

orb*_*ish 14 java file-io java.util.scanner

免责声明:我已经查看了我能找到的所有问题,但没有一个能回答这个问题.如果你找到一个,请指出我并礼貌.

因此,Oracle I/O教程使用Scanner打开一个文本文件,如下所示:

new Scanner(BufferedReader(FileReader("xanadu.txt")));
Run Code Online (Sandbox Code Playgroud)

但是Javadoc用Scanner打开一个文本文件,如下所示:

new Scanner(new File("myNumbers"));
Run Code Online (Sandbox Code Playgroud)

使用更简单的方法会很好,特别是当我有一个小文件并且可以使用较小的缓冲区时,但我也看到有人说当你直接打开文件时你无法关闭它.如果是这样的话,为什么在官方文档中使用这个成语?

编辑:我也看过,new Scanner(FileReader("blah.txt"));但这似乎是两个世界中最糟糕的.

编辑:我不打算开始讨论是否使用扫描仪.我有一个关于如何使用扫描仪的问题.谢谢.

max*_*dim 5

您可以查看Scanner的实现(JDK随附源代码).Scanner类中也有一个close()方法.基本上,您列出的两种方法对于读取小文件的用例都是相同的 - 只是不要忘记最后调用close().

  • 是的,如果您将File传递给Scanner构造函数,它将用于打开流,该流将在调用Scanner.close()方法时关闭.如果你正确地调用close()(例如从try/finally),你使用什么构造函数然后它将被正确关闭. (3认同)