Java FileReader问题

你好,我的代码中有这个

File file = new File("words.txt"); Scanner scanFile = new Scanner(new FileReader(file)); ArrayList words = new ArrayList(); String theWord; while (scanFile.hasNext()){ theWord = scanFile.next(); words.add(theWord); } 

但出于某种原因,我得到了一个

java.io.FileNotFoundException

我将words.txt文件放在与所有.java文件相同的文件夹中

我究竟做错了什么? 谢谢!

提示:将此行添加到您的代码中…

 System.out.println(file.getAbsolutePath()); 

然后将该路径与文件实际位置进行比较。 问题应该立即显而易见。

该文件应驻留在执行应用程序的目录中 ,即工作目录

通常,使用您的代码打包数据文件是个好主意,但是使用java.io.File读取它们是一个问题,因为很难找到它们。 解决方案是使用java.lang.ClassLoadergetResource()方法打开文件流。 这样, ClassLoader在存储代码的位置查找您的文件,无论它们位于何处。

尝试:

 URL url = this.getClass().getResource( "words.txt" ); File file = new File(url.getPath()); 

您尚未指定绝对路径。 因此,路径将被视为相对于流程的当前工作目录的路径。 通常这是您启动Main-Class的目录。

如果您不确定工作目录的位置,可以使用以下代码段将其打印出来:

 System.out.println(System.getProperty("user.dir")); 

解决问题需要在原始路径中添加必要的目录,以找到该文件。