Core Java

How to read a file on the classpath in Java

Posted On
Posted By admin

There are often programming situations when you need to read a file on the classpath via Java. In this article, I will show you how to write code for this.

Reading a file on the classpath

Let us first take a look at the code that you need to write to read a file on the classpath.

public class ReadFileFromClassPathDemo {

  public static void main(String[] args) throws IOException {
    // read in the file from the resources directory
    ClassLoader classLoader = ReadFileFromClassPathDemo.class.getClassLoader();
    URL url = classLoader.getResource("input.txt");
    String fileName = url.getFile();
    File file = new File(fileName);
    String str = new String(Files.readAllBytes(file.toPath()));
    System.out.println(str);
  }

}

Java has an in-built class called ClassLoader.  It is used to dynamically load classes. It can also be used to load resources from the classpath. The code above first obtains a ClassLoader. It then invokes the getResource method on the classLoader. This loads the resource (in this case a file named input.txt) from the file system and returns an URL instance. The URL class has a getFile method that returns the fully qualified filename.  A File object is then created using the filename. Finally, the Files.readAllBytes method is used to then read the contents of the file into a String.

Running code in Eclipse

In case you need to test the code above from an IDE like Eclipse, you need to do the following:

Step 1 – Right-click on the class name and click Run As > Run Configurations:

Step 2 – Click on the Dependencies Tab:

Step 3 – Click on Classpath entries. Click on Advanced > Add External Folder:

Step 4 – Navigate to the file system and select the folder which contains the file to be read (D:/Data/Temp in my case):

Step 5 – Verify that the folder is added to the classpath. Click on Apply and Run:

Step 6 – Verify that the file is read and its contents are displayed on the console:

Maven project

In the case of a Maven project, anything placed within the src/main/resources folder of the Maven project is automatically available on the classpath. So, if you place your input file in the src/main/resources folder, the code above will be able to read it.

Further Reading

Conclusion

So, in this article, we saw how to read a file on the classpath via Java. We also saw how to run the code in Eclipse.

If you'd like to watch a detailed video tutorial of this topic or other related topics, do check out my Java course here

Also, if you'd like to test your Java knowledge, do check out my practice tests course here


If you like this post, please do let me know via the comments box below.  You can also connect with me via my Facebook Page or subscribe to my Youtube channel!

Related Post