尝试在netbeans中读取文件时找不到文件异常

时间:2015-09-25 06:04:44

标签: java file embedded-resource filenotfoundexception fileinputstream

我正在制作一个简单的应用程序来播放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");

这是文件路径

enter image description here

1 个答案:

答案 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();
}