我希望创建一个File/FileReader对象以实例化Scanner对象。
所以,教材上是这样写的:
File file = new File("filename.txt");
然而,我们的讲师却说,那是错误的,正确的方法是:
FileReader file = new FileReader("filename.txt");
两者都可以使用。那么,它们之间有什么区别,哪一个是正确的呢?
我希望创建一个File/FileReader对象以实例化Scanner对象。
所以,教材上是这样写的:
File file = new File("filename.txt");
FileReader file = new FileReader("filename.txt");
File(String name)
FileWriter(String name)
FileWriter
更改为FileReader
,File
和FileReader
之间的主要区别在于File
没有close
方法,而FileReader
有,并实现了Closeable
。File
对象提供的大多数方法都是用于直接操作文件(检查是否存在、删除、创建、列出目录中的所有文件)。正如@Pshemo所提到的,File
不应被视为数据,而仅仅是一个路径。
我建议阅读File API和FileReader API。
File
对象允许您对文件进行操作(检查是否存在、删除、确定长度等)。FileReader
对象仅用于读取文件。 - David GFileReader
初始化的Scanner,则该读取器也将被关闭(这就是为什么我们不应该小心地关闭从System.in
读取的扫描仪)。 - Pshemonew Scanner(new File("path"))
,因为它的书写更短。它们两个几乎会做相同的事情。是的,它们两个都可以使用。 - Jean-François SavardSystem.in
。这就是为什么我喜欢创建一个Scanner实例,并在需要时重复使用它,在我的应用程序生命周期结束时关闭它,以让编译器高兴。 - Pshemo
File
只是一个文件对象。FileWriter
是一个可以向文件中写入内容的对象。这两者是非常不同的东西。 - JensFileWriter
用于写入文件,而Scanner
用于读取文件。File
类旨在表示系统中的文件。 - Luiggi MendozaFile
参数的Scanner
构造函数,但没有一个接受FileWriter
参数的构造函数。 - azurefrog