Arnab Datta
Arnab Datta

Reputation: 5256

FileNotFoundException even when the file is there

public StormAnalysis(){
    try {       
        fScanner = new Scanner(new File("tracks1949to2010_epa.txt"));
        while(fScanner.hasNextLine()){
            System.out.println(fScanner.nextLine());
        }
    } catch (FileNotFoundException e) {
        System.out.println("File not found. Try placing the tracks1949to2010_epa.txt in the same folder as StormAnalysis.java");    
        e.printStackTrace();
    }

}

The above is my code (and I also have an image of the error : http://folk.uio.no/arnabkd/test/images/error-code-task.jpg

As you can see, the txt file is in the same folder as the StormAnalysis.java file. In addition, the code works if I change the file path to "weather.dat" (which was given as another task/problem).

Any ideas will be appreciated!

Upvotes: 1

Views: 5647

Answers (3)

user46083
user46083

Reputation: 1

The Eclipse cwd is the Project folder, one level above bin and src.

Directory of ...eclipse-workspace\File IO
05/30/2018  07:52 PM    <DIR>          bin
05/30/2018  07:48 PM               148 sample.txt
05/30/2018  07:46 PM    <DIR>          src

testFile = new File("Sample.txt");
System.out.println(testFile.getAbsolutePath());

Upvotes: 0

Vineet Reynolds
Vineet Reynolds

Reputation: 76719

Eclipse copies (only) the class files into a bin\classes directory by default (unless this has been changed to another directory), before running a Java application. For all practical purposes, this directory is different from the src directory where the input file is present. You will have to configure the project's build properties in Eclipse to copy the input file (or all files of type .txt) to the output directory as well. This will make the file available in the same directory where the class file is, enabling the file to be read.

Upvotes: 2

user166390
user166390

Reputation:

The file isn't there. If it was it wouldn't throw the exception :-)

The likely culprit is the working directory differs from what is expected (that is, the current working directory does not contain a file with that name). This can be trivially verified with using the file's absolute path and observing that it is loaded correctly.

Alternatively, to find the current directory:

String cwd = new File(".").getAbsolutePath();

Happy coding.

Upvotes: 11

Related Questions