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

use*_*673 11 java jar inputstream filepath

我的代码:

BufferedInputStream bis =
  new BufferedInputStream(getClass().getResourceAsStream("playerhit.mp3"));
Run Code Online (Sandbox Code Playgroud)

playerhit.mp3文件与MP3.class运行时的包在同一个包中时,此代码可以正常工作.我将其作为.jar运行.如果我将文件路径更改为类似/src/data/audio/playerhit.mp3它不再起作用的东西.在以.jar身份运行时,是否仍然可以访问不同于文件包根目录的文件路径?

mth*_*ers 8

看看Javadoc吧getResourceAsStream(...).

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

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