Java .class.getResourceAsStream()

Posted

技术标签:

【中文标题】Java .class.getResourceAsStream()【英文标题】: 【发布时间】:2013-02-05 08:04:08 【问题描述】:

据我所知,Class.getResourceAsStream() 获得了指向 .jar 文件中的文件的InputStream?如果我在这方面有错误,请纠正我。

有什么方法可以临时将外部文件“加载”到 .jar 中,以便getResourceAsStream() 方法可以检索到它?

例如,将 C:/folder/file.txt 加载到 .jar 中,以便 MyClass.class .getResourceAsStream("file.txt") 将工作的 InputStream 返回到文件中,或者至少将它的副本暂时“加载”到 .jar 中。

很抱歉我的措辞如此糟糕,我希望你能理解我想要做什么,我不太清楚如何简单地解释它。

【问题讨论】:

我不相信你能做到这一点。也许对您最终要达到的目标进行一些解释会很有用? 为什么要这样做?如果你知道文件的位置,直接加载即可。 或者把文件所在的目录放到classpath中。 我最终想要实现的是加载一个 .png 图像,以便可以通过此方法访问它。必须通过 .getResourceAsStream() 的原因是因为我正在修改 Applet,并且无法更改访问图像的方式。 【参考方案1】:

不,getResourceAsStream() 方法从类路径获取文件。这包括在命令行上这样指定的任何内容(windows 版本,linux 使用 ':' 作为分隔符):

java -cp "path;path2;path3;path4/some.jar" your.main.Clazz

【讨论】:

同样在 servlet 容器中,类路径处理可能有点困难(因为 tomcat 确定类路径上的内容和不存在的内容,并且 Class.getClassLoader() 在某些情况下可能返回 null。 【参考方案2】:
this.getClass().getResourceAsStream("myImage.png");

确保您的图像在类路径中。无需将其放入任何JAR 中。

【讨论】:

以上是关于Java .class.getResourceAsStream()的主要内容,如果未能解决你的问题,请参考以下文章

Java 布尔运算

java [Java] Java常用代码#java

Java - 35 Java 实例

Java While 循环

Java 字符串

Java If ... Else