Java 扫描仪无法仅从文件名读取
Java Scanner can't read from only File Name
我正在制作一个 Java 程序来从 .csv 文件中读取一些分数并计算这些分数的平均值。要从文件中读取,我正在使用扫描仪 Class。
首先,我创建了一个扫描仪来读取我的文件:
Scanner scanner = new Scanner(new File("TempFile.csv"));
我希望它能工作,但它 returns 一个 FileNotFoundException。因此,我将 TempFile.csv 替换为文件的绝对文件名。
Scanner scanner = new Scanner(new File(C:\Users\....));
这给了我想要的结果,我能够解析文件。我是 Java 的新手,但我知道使用绝对文件名是不好的做法。
如何只使用短文件名?
Scanner scanner = new Scanner(new File (new File("TempFile.csv").getAbsolutePath()));
使用上面的方法。
"TempFile.csv"是相对路径。它与您的 java 程序的工作目录相关。这个目录的值是System
属性"user.dir"。以下代码行为您提供了该值...
String workingDirectory = System.getProperty("user.dir");
因此,如果您得到 FileNotFoundException
,这可能意味着文件 "TempFile.csv" 不在您的 java 程序的工作目录中。
顺便说一下,由于 java 8,class java.nio.file.Files
包含方法 readAllLines。因此,如果文件 "TempFile.csv" 不是太大,readAllLines
可能是 class Scanner
的更简单替代方案。请注意,调用该方法时您仍然需要提供正确的文件路径。
我正在制作一个 Java 程序来从 .csv 文件中读取一些分数并计算这些分数的平均值。要从文件中读取,我正在使用扫描仪 Class。
首先,我创建了一个扫描仪来读取我的文件:
Scanner scanner = new Scanner(new File("TempFile.csv"));
我希望它能工作,但它 returns 一个 FileNotFoundException。因此,我将 TempFile.csv 替换为文件的绝对文件名。
Scanner scanner = new Scanner(new File(C:\Users\....));
这给了我想要的结果,我能够解析文件。我是 Java 的新手,但我知道使用绝对文件名是不好的做法。
如何只使用短文件名?
Scanner scanner = new Scanner(new File (new File("TempFile.csv").getAbsolutePath()));
使用上面的方法。
"TempFile.csv"是相对路径。它与您的 java 程序的工作目录相关。这个目录的值是System
属性"user.dir"。以下代码行为您提供了该值...
String workingDirectory = System.getProperty("user.dir");
因此,如果您得到 FileNotFoundException
,这可能意味着文件 "TempFile.csv" 不在您的 java 程序的工作目录中。
顺便说一下,由于 java 8,class java.nio.file.Files
包含方法 readAllLines。因此,如果文件 "TempFile.csv" 不是太大,readAllLines
可能是 class Scanner
的更简单替代方案。请注意,调用该方法时您仍然需要提供正确的文件路径。