运行.jar时获取getResourceAsStream文件路径

时间:2013-04-15 08:15:18

标签: java jar inputstream filepath

我的代码:

BufferedInputStream bis =
  new BufferedInputStream(getClass().getResourceAsStream("playerhit.mp3"));

playerhit.mp3文件与运行它的MP3.class包在同一个包中时,此代码可以正常工作。我将其运行为.jar。如果我将文件路径更改为类似/src/data/audio/playerhit.mp3的内容,则它不再起作用。无论如何,在以.jar?

运行时,是否可以访问不同于文件包根目录的文件路径

2 个答案:

答案 0 :(得分:8)

看看Javadoc for getResourceAsStream(...)

如果参数以/开头,则资源的绝对名称是/后面的名称部分。否则,绝对名称具有以下形式: modified_package_name/name modified_package_name是此对象的包名称,其中/替换为.

因此,如果您的playerhit.mp3位于包结构的根目录中,则应将其引用为/playerhit.mp3。如果它在/src/data/audio/中,您应该使用/data/audio/playerhit.mp3 - 但请检查您的JAR文件的内容以确定。

答案 1 :(得分:0)

首先检查文件是否实际存在于jar中。

检查罐子里面的位置。

相对路径:当前包

绝对路径:jar的根