class.getClassLoader().getResourceAsStream()和class.getResourceAsStream()都是用于获取资源文件的输入流,但是它们的使用方式略有不同。
class.getResourceAsStream()方法是从当前类所在的包中获取资源文件的输入流,需要使用相对路径来指定资源文件的位置。例如,如果资源文件位于当前类所在包的根目录下,则可以使用以下代码获取输入流:
InputStream inputStream = MyClass.class.getResourceAsStream("/filename");
其中,MyClass是当前类的类名,/filename表示资源文件的相对路径。
而class.getClassLoader().getResourceAsStream()方法则是从类加载器的classpath中获取资源文件的输入流,需要使用绝对路径来指定资源文件的位置。例如,如果资源文件位于classpath的根目录下,则可以使用以下代码获取输入流:
InputStream inputStream = MyClass.class.getClassLoader().getResourceAsStream("filename");
其中,MyClass是当前类的类名,filename表示资源文件的绝对路径。
需要注意的是,如果使用class.getResourceAsStream()方法获取资源文件的输入流时,路径前面需要加上/,表示从classpath的根目录开始查找资源文件;
而如果使用class.getClassLoader().getResourceAsStream()方法获取资源文件的输入流时,路径前面不需要加/,表示从classpath的当前目录开始查找资源文件。