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 的更简单替代方案。请注意,调用该方法时您仍然需要提供正确的文件路径。