This question already has an answer here:
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...
Then compare that path with where your file actually is. The problem should be immediately obvious.
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 thegetResource()
methods injava.lang.ClassLoader
to open a stream to a file. That way theClassLoader
looks for your files in the location where your code is stored, wherever that may be.The file should reside in the directory from which you execute the application, i.e. the working directory.
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:
Fixing the problem will require adding the necessary directories in the original path, to locate the file.
try: