1

你好,我的代码中有这个

File file = new File("words.txt");
    Scanner scanFile = new Scanner(new FileReader(file));
    ArrayList<String> words = new ArrayList<String>();

    String theWord;    
    while (scanFile.hasNext()){
        theWord = scanFile.next();
        words.add(theWord);
    }

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

java.io.FileNotFoundException

我的 words.txt 文件与我的所有 .java 文件位于同一文件夹中

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

4

5 回答 5

6

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

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

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

于 2011-06-07T13:50:55.193 回答
5

该文件应位于执行应用程序的目录中,即工作目录

于 2011-06-07T13:50:06.160 回答
4

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

于 2011-06-07T13:53:02.637 回答
3

尝试:

URL url = this.getClass().getResource( "words.txt" );
File file = new File(url.getPath());
于 2011-06-07T13:54:09.527 回答
2

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

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

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

解决这个问题需要在原始路径中添加必要的目录来定位文件。

于 2011-06-07T13:51:28.117 回答