
In this sample I've eliminated the CSVLineTokenizer and replaced it with a simple StringBuffer, and I return a plain old String at the end of the method.Īlso, if I didn't stress it properly earlier, with this approach the resource file that you're trying to read from must be in the same directory in the jar file as this class.

InputStream is = getClass().getResourceAsStream(filename) Public String readFromJARFile(String filename) Here is a slightly more simple version of that method: I haven't read through the Javadocs yet to know if all of those close statements at the end are necessary. I don't recommend this for real world programming, but it works okay for my unit testing needs today. Also note that I'm throwing any exceptions that occur rather than handling them. Note that I'm doing all of this within the context of a JUnit test method. Without a path stated before the filename (like " /foo/bar/3Columns.csv") the getResourceAsStream method looks for this text file in its current directory. In my example I have a plain text file named " 3Columns.csv" in the same directory as the class that contains this method. The trick to reading text files from JAR files are these lines of code, especially the first line: InputStreamReader isr = new InputStreamReader(is) īufferedReader br = new BufferedReader(isr) ĬSVLineTokenizer tok = new CSVLineTokenizer(line) ĪssertEquals("Should be three columns in each row",3,tok.countTokens()) InputStream is = getClass().getResourceAsStream("3Columns.csv")


The source code to read a file from a Java Jar file uses the getClass and getResourceAsStream methods: This is useful any time you pack files and other resources into Jar files to distribute your Java application. Here's an example of some Java code I'm using to read a file (a text file) from a Java Jar file. Java jar file reading FAQ: Can you show me how a Java application can read a text file from own of its own Jar files?
