Java ClassLoader getSystemResourceAsStream() Method



Description

The Java ClassLoader getSystemResourceAsStream() method opens for reading, a resource of the specified name from the search path used to load classes.

Declaration

Following is the declaration for java.lang.ClassLoader.getSystemResourceAsStream() method

public static InputStream getSystemResourceAsStream(String name)

Parameters

name − This is the resource name.

Return Value

This method returns an input stream for reading the resource, or null if the resource could not be found.

Exception

NA

Getting Resource as Stream using ClassLoader Example

The following example shows the usage of java.lang.ClassLoader.getSystemResourceAsStream() method. In this program, we've retrieved class of a ClassLoaderDemo. Then using getClassLoader(), we get the required ClassLoader. Now considering file.txt being in classpath of the java program, we've retrieved content of the file as stream using getSystemResourceAsStream() and printed the content accordingly.

package com.tutorialspoint;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

class ClassLoaderDemo {

   static String getSystemResource(String rsc) {
      String val = "";

      try {
         Class cls = Class.forName("com.tutorialspoint.ClassLoaderDemo");

         // returns the ClassLoader object associated with this Class
         ClassLoader cLoader = cls.getClassLoader();

         // input stream
         InputStream inputStream = cLoader.getSystemResourceAsStream(rsc);
         if(inputStream != null) {
            BufferedReader buffer = new BufferedReader(new InputStreamReader(inputStream));

            // reads each line
            String l;
            while((l = buffer.readLine()) != null) {
               val = val + l;
            } 
            buffer.close();
            inputStream.close();
         }
      } catch(Exception e) {
         System.out.println(e);
      }
      return val;
   }

   public static void main(String[] args) {
      System.out.println("File: " + getSystemResource("file.txt"));             
   }
}  

Output

Assuming we have a text file file.txt, which has the following content −

This is TutorialsPoint!

Let us compile and run the above program, this will produce the following result −

File: This is TutorialsPoint! 

Checking Resource as Stream using ClassLoader Example

The following example shows the usage of java.lang.ClassLoader.getSystemResourceAsStream() method. In this program, we've retrieved class of a ClassLoaderDemo. Then using getClassLoader(), we get the required ClassLoader. Now considering test.txt not being in the class path, we got stream as null using getSystemResourceAsStream() and printed the message accordingly.

package com.tutorialspoint;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

class ClassLoaderDemo {

   static String getSystemResource(String rsc) {
      String val = "";

      try {
         Class cls = Class.forName("com.tutorialspoint.ClassLoaderDemo");

         // returns the ClassLoader object associated with this Class
         ClassLoader cLoader = cls.getClassLoader();

         // input stream
         InputStream inputStream = cLoader.getSystemResourceAsStream(rsc);
         if(inputStream != null) {
            BufferedReader buffer = new BufferedReader(new InputStreamReader(inputStream));

            // reads each line
            String l;
            while((l = buffer.readLine()) != null) {
               val = val + l;
            } 
            buffer.close();
            inputStream.close();
         } else{
             System.out.println("File not found!");		 
		 }
      } catch(Exception e) {
         System.out.println(e);
      }
      return val;
   }

   public static void main(String[] args) {
      System.out.println("File: " + getSystemResource("test.txt"));                
   }
}  

Output

Assuming we have another text file test.txt, but not in classpath which has the following content −

This is Java Tutorial

Let us compile and run the above program, this will produce the following result −

File not found!
File:

java_lang_classloader.htm
Advertisements