关于Resource的获得问题(解决马上结贴)
大家好:
我对ClassLoader 的InputStream getResourceAsStream(String name)方法有些疑问:
我是这样理解的:当name不以"/"开头,那么ClassLoader按照寻找class的方式来寻找Resource所以如果name为com/test/a.txt那么应把a.txt放在com/test文件夹下,并且把com文件夹放在classpath中。也就是ClassLoader把a.txt当作是class文件来寻找了。我做了几个实验好像是这样的。例子如下:
import java.io.*;
public class UseResourceTest {
public static void main(String[] args) throws Exception {
ClassLoader ld = ClassLoader.getSystemClassLoader();
InputStream in = ld.getResourceAsStream("com/test/a.txt");
System.out.println(in);
}
}
我把com文件夹放在classpath之外就输出null,否则输出非null。
但是我不明白的地方:以"/"开头的name有什么用?比如name为"/a.txt"则不管我把a.txt放在哪里都是输出null。
import java.io.*;
public class UseResourceTest {
public static void main(String[] args) throws Exception {
ClassLoader ld = ClassLoader.getSystemClassLoader();
InputStream in = ld.getResourceAsStream("/a.txt");
System.out.println(in);
}
}
是不是这种方式只能在jar包里使用?
希望大侠指点。