提问人:myverdict 提问时间:8/10/2020 最后编辑:myverdict 更新时间:10/16/2021 访问量:1707
用于在 Java 中打开和读取数据的 File 和 Scanner 对象
File and Scanner objects for opening and reading data in Java
问:
我的教科书规定如下:
还可以使用 Scanner
类从文件中读取输入。不要将 System.in
传递给 Scanner
类构造函数,而是传递对 File
对象的引用。下面是一个示例:
File myFile = new File("Customers.txt");
Scanner inputFile = new Scanner(myFile);
第一个语句创建 File
类的实例。File
类位于 Java API 中,用于表示文件。请注意,我们已将字符串“Customers.txt
”传递给构造函数。这将创建一个表示文件“Customers.txt
”的 File
对象。
在第二个语句中,我们将对此 File
对象的引用作为参数传递给 Scanner
类构造函数。这将创建一个 Scanner
对象,该对象使用文件“Customers.txt
”作为其输入源。
我的问题:我无法理解为什么我们需要一个对象?我们不能像下面这样编写上面的代码来读取文件吗?File
Scanner inputFile = new Scanner("Customers.txt");
如果 Java 需要一个对象和一个对象,那么它到底是如何工作的呢?File
Scanner
答:
您需要将对象传递给 Scanner 构造函数以调用 Scanner(File source) 构造函数,而不是 Scanner(String source) 构造函数。如果您使用字符串作为参数,则将使用将字符串作为参数的构造函数,它将生成从文档中所述的指定字符串扫描的值,而不是根据需要从文件中扫描的值。File
"Customers.txt"
我相信这里发生的事情是 scanner 类要求您输入原始数据类型(又名 String、int 等)而不是路径。
Scanner inputFile = new Scanner("Customers.txt");
如果您编写上述代码并显示它,它将只是空白,因为 scanner 类无法理解您的参数。另一方面,类 File 将路径作为参数,并创建一个可用作 Scanner 类参数的文件对象。因此,为什么您必须在使用 scanner 类之前创建一个文件对象。
评论