【问题标题】:music player "file not found" exception?音乐播放器“找不到文件”异常?
【发布时间】:2012-11-30 20:19:37
【问题描述】:

我正在尝试为一个简单的小型 Java 游戏添加配乐,并且我已经研究了如何在我拥有可编译代码的范围内做到这一点。但是,当我运行它时,我得到一个 FileNotFound 异常。我正在使用 Eclipse,我的 wav 文件与 .class 文件位于同一目录中。

这是我的例外:

java.io.FileNotFoundException: bach.wav(没有这样的文件或目录)

还有我的音乐播放器代码:

public static void play()
{
  try
  {
      Clip clip = AudioSystem.getClip();
      clip.open(AudioSystem.getAudioInputStream(new File("bach.wav")));
      clip.start();
  }
  catch (Exception exc)
  {
      exc.printStackTrace(System.out);
  }
 }

【问题讨论】:

  • 这是小程序还是桌面应用程序?

标签: java file embedded-resource javasound


【解决方案1】:

AudioSystem.getAudioInputStream 有一个 overloaded method,它接受一个 URL。这将根据需要使用缓冲流。由于.wav 文件与类文件位于同一位置,您可以使用getResource

AudioSystem.getAudioInputStream(getClass().getResource("bach.wav"));

因为playstatic,你需要:

AudioSystem.getAudioInputStream(MyClass.class.getResource("bach.wav"));

【讨论】:

  • getAudioInputStream 的流需要缓冲,而从getResourceAsStream 返回的流没有缓冲。更短的(在许多方面)是使用getResource 来代替URL,如Java Sound tag Wiki 所示。
  • 好点。我原来有getResource,所以把它改回来了。谢谢。 :)
【解决方案2】:

尝试改变:

new File("bach.wav")

到:

new File("bach.wav").getAbsolutePath()

【讨论】:

    【解决方案3】:

    当您说new File("bach.wav") 时,您必须将文件放在项目的根文件夹中 src 和 bin 文件夹所在的位置

    【讨论】:

    • 部署时可能会失败。 @Reimeus 提供了最佳策略。
    • @andrew true,如果你打算部署项目,应该使用reimeus解决方案。
    猜你喜欢
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多