Java Scanner无法仅从文件名读取

时间:2019-07-13 19:53:41

标签: java java.util.scanner filenotfoundexception

我正在制作一个Java程序,以从.csv文件中读取一些分数并计算这些分数的平均值。要读取文件,我正在使用扫描仪类。

首先,我创建一个扫描仪以读取我的文件:

Scanner scanner = new Scanner(new File("TempFile.csv"));

我希望它能正常工作,但是它返回FileNotFoundException。因此,我用文件的绝对文件名替换了TempFile.csv。

Scanner scanner = new Scanner(new File(C:\\Users\....));

这给了我想要的结果,并且我能够解析该文件。我是Java的新手,但我知道使用绝对文件名是一种不好的做法。

如何仅使用短文件名?

2 个答案:

答案 0 :(得分:0)

Scanner scanner = new Scanner(new File (new File("TempFile.csv").getAbsolutePath()));

在上方使用。

答案 1 :(得分:0)

“ TempFile.csv”是相对路径。它是相对于Java程序的工作目录的。该目录是System属性“ user.dir”的值。下面的代码行为您提供了该值...

String workingDirectory = System.getProperty("user.dir");

因此,如果您得到FileNotFoundException,则可能意味着文件“ TempFile.csv”不在Java程序的工作目录中。

顺便说一句,由于java 8,类java.nio.file.Files包含方法readAllLines。因此,如果文件“ TempFile.csv”不太大,则readAllLines可能是类Scanner的更简单替代。请注意,尽管在调用该方法时仍需要提供文件的正确路径。