在类路径上的目录中,从同一类加载器加载的类中,你应该能够使用以下任一种:
// From ClassLoader, all paths are "absolute" already - there's no context// from which they could be relative. Therefore you don't need a leading slash.InputStream in = this.getClass().getClassLoader() .getResourceAsStream("SomeTextFile.txt");// From Class, the path is relative to the package of the class unless// you include a leading slash, so if you don't want to use the current// package, include a slash like this:InputStream in = this.getClass().getResourceAsStream("/SomeTextFile.txt");
如果这些都不起作用,则表明还有其他问题。
因此,例如,使用以下代码:
package dummy;import java.io.*;public class Test{ public static void main(String[] args) { InputStream stream = Test.class.getResourceAsStream("/SomeTextFile.txt"); System.out.println(stream != null); stream = Test.class.getClassLoader().getResourceAsStream("SomeTextFile.txt"); System.out.println(stream != null); }}
而这个目录结构:
pre dummy Test.classtxt SomeTextFile.txt
然后(使用Linux机器上的Unix路径分隔符):
java -classpath pre:txt dummy.Test
结果:
truetrue
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)