I read text file in my unit test and I placed some input text files in resources folder. Following is the directory structure.
ClassLoader classLoader = getClass().getClassLoader();
public void testReadInputFile() throws Exception
String file = classLoader.getResource("test/com/au/myapp/resources/input.txt").getFile();
List<String> result = InputFileReader.getInstance().readFile(file);
assertEquals("Size of the list should be 2", 2, result.size());
The classloader uses the classpath to load resources. Your classes are, most probably, in the package
com.au.myapp.util. Not in the package
The directory structure matched the package structure. That means that the directories src and test are both source roots.
Since your file is in the directory
com/au/myapp/resources under a source root, its package is
So you need
This is a resource, loaded from the classpath. It might be a file now, because you're in development mode, and classes are loaded directly from the file system. But once in production, they won't be loaded from the file system anymore, but from a jar file. So you can't use file IO to read the content of this resource. So use
and read from this stream.