在项目地图中播放文件

时间:2015-10-28 11:55:07

标签: java netbeans

我正在netbeans中制作一个小型的Java音乐播放器应用程序(不适用于android)。我们在项目中创建了一个资产文件夹,其中包含音乐播放器应该播放的内容。我们所有的功能都在工作,如果我们无法弄清楚如何从项目地图中调出这首歌。我们现在已经在特定位置硬编码了,但是它不能在不同的计算机上工作。

有人有解决方案,以便我们可以在项目地图中调出歌曲吗?

1 个答案:

答案 0 :(得分:0)

鉴于项目中有Assets文件夹,您可以执行以下操作:

initializeAudio("Assets/my_cool_song.wav");

其中initializeAudio依赖于Clip对象的类级声明:

private void initializeAudio(final File url) {
    try {
        if (clip != null) stopPlay();
        AudioInputStream inputStream = AudioSystem.getAudioInputStream(url);
        clip = AudioSystem.getClip();
        clip.open(inputStream);
    } catch (Exception e) {
        stopPlay();
        System.err.println(e.getMessage());
    }
}

这适用于所有带有项目(或JAR)的计算机,而initializeAudio("/Users/myusername/Developer/Projects/AudioApp/Assets/my_cool_song.wave");不起作用的原因是因为一个依赖于硬编码的绝对路径,而另一个依赖于文件路径相对于项目的结构。创建相对路径时,假装项目的基本目录全部存在。

因此,例如,如果您的项目结构是包含子MyProjectAssetssrcbin的{​​{1}}文件夹,并且您想要要引用util文件夹中的某个项目,请沿着这样的路径传递:util