我有一个使用一些txt文件的jar文件。为了获得它们,它使用Class.getResourceAsStream
功能。
Class A
{
public InputStream getInputStream(String path) throws Exception {
try {
return new FileInputStream(path);
} catch (FileNotFoundException ex) {
InputStream inputStream = getClass().getResourceAsStream(path);
if (inputStream == null)
throw new Exception("Failed to get input stream for file " + path);
return inputStream;
}
}
}
该代码运行良好。
问题是,如果我将A类定义为extends java.io.File
,那么我得到的InputStream getResourceAsStream
为null。
另外,如果我将A类保留为常规类(不继承),并将B类定义为:
Class B extends java.io.File
{
public InputStream getInputStream(String path) throws Exception
{
return new A().getInputStream(path);
}
}
返回的InputStream仍然为null。
问题是什么?有没有办法从继承的类访问文件File
?
谢谢,
我怀疑这与包比继承有关。
如果您的类在一个包中,那么getResourceAsStream()
它将相对于该包,除非您以“ /”(使其成为“绝对”资源)开头。一种替代方法是使用getClass().getClassLoader().getResourceAsStream()
它不知道相对于包的路径。
只是子类化File
根本不影响行为。如果您确实认为确实如此,请发布一个简短但完整的程序来演示该问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句