查找播放声音的文件

时间:2016-04-24 15:07:33

标签: java audio

我正在尝试创建一个应用程序,当我点击一个JButton时,它会播放一首歌。我已经知道如何指定JButtons。但是,我似乎无法找到播放声音的方法。我不会使用sun.audio,所以我看到的很多线程都没有用。我发现了很多低质量的答案。最后,我决定使用这段代码。

public static synchronized void playSound(final String url) {
  new Thread(new Runnable() {
public void run() {
  try {
        Clip clip = AudioSystem.getClip();
        AudioInputStream inputStream = AudioSystem.getAudioInputStream(
        Main.class.getResourceAsStream("/path/to/sounds/" + url));
        clip.open(inputStream);
        clip.start(); 
      } catch (Exception e) {
        System.err.println(e.getMessage());
      }
    }
  }).start();
}

在我的src文件夹中,我有一个名为“Songs”的文件夹。我将文件路径更改为: /歌/

然后,我尝试使用wav文件调用该函数:

playSound("song.wav");

然后我得到一个null错误。我相信这是因为它无法识别文件路径。我的问题的答案很可能是非常明显的,但不知怎的,我无法找到它。

1 个答案:

答案 0 :(得分:0)

将song.wav放在Main类的同一个文件夹中,然后getResourceAsStream会找到它。

如果你正在使用eclipse,它可以自动将.wav文件复制到输出文件夹。

您可能希望在某个不同的Java包上创建一个类,这样您的入口点就不会受到资产的污染。

此阅读可能会对您有所帮助:http://www.thinkplexx.com/learn/howto/java/system/java-resource-loading-explained-absolute-and-relative-names-difference-between-classloader-and-class-resource-loading