用于打开和读取 Java 中数据的文件和扫描仪对象
File and Scanner objects for opening and reading data in Java
我的课本是这样说的:
您还可以使用 Scanner
class 从文件中读取输入。您不是将 System.in
传递给 Scanner
class 构造函数,而是传递对 File
对象的引用。这是一个例子:
File myFile = new File("Customers.txt");
Scanner inputFile = new Scanner(myFile);
第一个语句创建了 File
class 的一个实例。 File
class在JavaAPI中,用来表示一个文件。请注意,我们已将字符串“Customers.txt
”传递给构造函数。这将创建一个 File
对象,代表文件“Customers.txt
”。
在第二个语句中,我们将对此 File
对象的引用作为参数传递给 Scanner
class 构造函数。这将创建一个 Scanner
对象,该对象使用文件“Customers.txt
”作为其输入源。
我的问题:我无法理解为什么我们需要一个 File
对象?难道不能像下面这样写上面的代码来读取文件吗?
Scanner inputFile = new Scanner("Customers.txt");
如果 Java 需要一个 File
对象和一个 Scanner
对象,它到底是如何工作的?
您需要将 File
对象传递给 Scanner 构造函数以调用 Scanner(File source) constructor and not Scanner(String source) 构造函数。如果您使用字符串 "Customers.txt"
作为参数,将使用以字符串作为参数的构造函数,它将生成 从指定字符串 扫描的值,如文档中所述和不是你想要的文件。
我相信这里发生的是扫描器 class 要求您输入原始数据类型(也称为 String、int 等)而不是路径。
Scanner inputFile = new Scanner("Customers.txt");
如果您编写上面的代码并显示它,它将只是空白,因为扫描仪class 无法理解您的参数。另一方面,class 文件将路径作为参数并创建一个文件对象,该文件对象可用作扫描器 class 的参数。因此,为什么您必须在使用扫描仪之前创建一个文件对象 class。
我的课本是这样说的:
您还可以使用 Scanner
class 从文件中读取输入。您不是将 System.in
传递给 Scanner
class 构造函数,而是传递对 File
对象的引用。这是一个例子:
File myFile = new File("Customers.txt");
Scanner inputFile = new Scanner(myFile);
第一个语句创建了 File
class 的一个实例。 File
class在JavaAPI中,用来表示一个文件。请注意,我们已将字符串“Customers.txt
”传递给构造函数。这将创建一个 File
对象,代表文件“Customers.txt
”。
在第二个语句中,我们将对此 File
对象的引用作为参数传递给 Scanner
class 构造函数。这将创建一个 Scanner
对象,该对象使用文件“Customers.txt
”作为其输入源。
我的问题:我无法理解为什么我们需要一个 File
对象?难道不能像下面这样写上面的代码来读取文件吗?
Scanner inputFile = new Scanner("Customers.txt");
如果 Java 需要一个 File
对象和一个 Scanner
对象,它到底是如何工作的?
您需要将 File
对象传递给 Scanner 构造函数以调用 Scanner(File source) constructor and not Scanner(String source) 构造函数。如果您使用字符串 "Customers.txt"
作为参数,将使用以字符串作为参数的构造函数,它将生成 从指定字符串 扫描的值,如文档中所述和不是你想要的文件。
我相信这里发生的是扫描器 class 要求您输入原始数据类型(也称为 String、int 等)而不是路径。
Scanner inputFile = new Scanner("Customers.txt");
如果您编写上面的代码并显示它,它将只是空白,因为扫描仪class 无法理解您的参数。另一方面,class 文件将路径作为参数并创建一个文件对象,该文件对象可用作扫描器 class 的参数。因此,为什么您必须在使用扫描仪之前创建一个文件对象 class。