-1

我正在製作一個簡單的應用程序來播放Java中的聲音。當我將音頻文件保存在D:磁盤中時,我可以做到這一點。這裏是代碼嘗試在netbeans中讀取文件時發現文件異常

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

+0

這已經..what與Swing做?不要僅僅因爲這是使用的GUI工具包而在標籤上貼標籤。這同樣適用於您的IDE。標籤是爲了表示*問題*所涉及的內容。 –

回答

4

你的波形文件,包含在「源包」內,一旦程序被打包爲一個Jar將無法訪問,因爲文件將被嵌入到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(); 
} 
相關問題