开发者

Problem with Java FileReader [duplicate]

This question already has answers here: FileNotFoundException, the file exists Java [closed] (2 answers) 开发者_Go百科 Closed 7 years ago.

Hello I have this in my code

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);
    }

But for some reason I am getting a

java.io.FileNotFoundException

I have the words.txt file in the same folder as all of my .java files

What am I doing wrong? Thanks!


Tip: add this line to your code...

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

Then compare that path with where your file actually is. The problem should be immediately obvious.


The file should reside in the directory from which you execute the application, i.e. the working directory.


Generally it's a good idea to package data files with your code, but then using java.io.File to read them is a problem, as it's hard to find them. The solution is to use the getResource() methods in java.lang.ClassLoader to open a stream to a file. That way the ClassLoader looks for your files in the location where your code is stored, wherever that may be.


try:

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


You haven't specified an absolute path. The path would therefore be treated as a path, relative to the current working directory of the process. Usually this is the directory from where you've launched the Main-Class.

If you're unsure about the location of the working directory, you can print it out using the following snippet:

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

Fixing the problem will require adding the necessary directories in the original path, to locate the file.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜