我正在制作一个简单的应用程序来播放Java中的声音。当我将音频文件保存在 D:磁盘中时,我能够做到这一点。这是代码
in = new FileInputStream("D:\\"+selectedSounds[position]+".wav");
//Some code for playing audio
然后我将音频文件放在Jframe类所在的同一个包中。但是当我运行它时会提示fileNotFound异常。有人可以告诉我为什么会这样。
in = new FileInputStream(selectedSounds[position]+".wav");
// I have also tried
new FileInputStream("./"+selectedSounds[position]+".wav");
这是文件路径
答案 0 :(得分:4)
程序打包为Jar后,将无法访问“源包”中包含的wave文件,因为文件将嵌入Jar本身,不再作为文件访问。
相反,您应该使用Class#getResourceAsStream
,例如......
try (InputStream in = getClass().getResourceAsStream("/PlayAudio/" + selectedSounds[position]+".wav")) {
// You now have an InputStream to your resource, have fun
} catch (IOException | NullPointerException exp) {
exp.printStackTrace();
}