1

我已经创建了游戏青蛙并想为其添加音频。音频文件是 .wav。如果我使用存储在桌面上的音频的文件路径,它就可以工作。但我想使用我添加到netbeans中名为“audio”的包中的音频。但它出现了一个错误。

private String audioFile = "/audio/retrolevel.wav";

  public void getSound() {
    try
{
    Clip clip = AudioSystem.getClip();
    clip.open(AudioSystem.getAudioInputStream(new File(audioFile)));
    clip.start();
}
catch (LineUnavailableException | UnsupportedAudioFileException | IOException exc)
{
    exc.printStackTrace(System.out);
}

}

错误是

java.io.FileNotFoundException: \audio\retrolevel.wav (The system cannot find the path specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at com.sun.media.sound.WaveFloatFileReader.getAudioInputStream(WaveFloatFileReader.java:164)
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1179)
at frogger.Board.getSound(Board.java:170)

如果 audioFile = "C:/Users/Michael/Desktop/Frogger Music/WAV/retrolevel.wav" 它工作正常。我很确定 netbeans 的路径很好,那么为什么它不能与 netbeans 中的文件一起使用?

4

2 回答 2

0

您需要调用类加载器才能访问包中的文件。有关 API 说明,请参见此处。这是它的工作原理:

InputStream inaudio = getClass().getResourceAsStream("/audio/retrolevel.wav");
Clip clip = null;
try {
    clip = AudioSystem.getClip();
    clip.open(AudioSystem.getAudioInputStream(inaudio));
} catch (IOException | LineUnavailableException | UnsupportedAudioFileException e1) {
    e1.printStackTrace();
}
clip.start();
于 2013-08-27T11:58:51.680 回答
0

我认为你的路径是错误的。不使用

private String audioFile = "/audio/retrolevel.wav";

尝试使用

private String audioFile = "src/audio/retrolevel.wav";

请记住,我已经用 eclipse 尝试过。在 eclipsesrc中是默认的源文件夹。如果它在 netbeans 中有其他名称,请更改它!基本上我将上述路径的目录添加到字符串中。

于 2013-08-27T12:09:37.807 回答