加载资源(声音、图像、xml 数据)的最佳方式是什么,并且也可以在分布式 jar 文件中使用?
我需要加载一些声音、图像和 xml 数据,以便在我的程序中使用。使用
AudioInputStream ais = AudioSystem.getAudioInputStream(new File("~/src/com/example/package/name/assets/TestSound.wav"));
在 jar 中不起作用,原因很明显,包括 src
不会在 jar 中。
编辑:
(正在运行)MWE:http://pastebin.com/CNq6zgPw
最佳答案
ClassLoader
类有两个相关方法:
getResource(path)
为类路径上的任何资源提供 URL,getResourceAsStream(path)
提供资源的输入流。
您可以将这些方法与 AudioSystem.getAudioInputStream(...)
方法的重载一起使用,以获取读取 JAR 文件中资源的音频流。
请注意,如果您在 ClassLoader
对象上调用这些方法,则该路径将在类路径上的 JAR 文件的命名空间中解析……而不是在开发平台的文件系统命名空间中。
关于java - 在 jar 中加载资源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30282834/