2015-10-28 43 views
0

我在netbeans(不適用於android)中製作了一個小型Java音樂播放器應用程序。我們已經在項目中創建了一個資源文件夾,並在其中播放音樂播放器應播放的內容。我們有所有的功能,除了我們無法弄清楚如何從項目地圖中調出歌曲。我們現在已經將其硬編碼到了特定的位置,但這不適用於其他計算機。從項目地圖中播放文件

有人有解決方案,以便我們可以從我們的項目地圖中調出歌曲嗎?

+0

我不太清楚我的理解是什麼意思,但是可以由用戶定義的屬性文件呢?您可以設置該屬性文件中歌曲的路徑並從應用程序中加載它。 – Keews

+0

我想你正在尋找[this](http://stackoverflow.com/questions/14209085/how-to-define-a-relative-path-in-java)。如果我理解正確,你只需要一個相對的音樂路徑。 – Avantol13

回答

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");不起作用的原因是因爲一個依賴於硬編碼的絕對路徑,另一個依賴於相對於結構的文件路徑該項目的e。創建相對路徑時,假設項目的基本目錄全部存在。

因此,舉例來說,如果你的項目結構是MyProject夾帶着孩子Assetssrcbinutil,和你想參考一些項目util文件夾中,沿着像這樣的路徑傳遞:util/my_cool_file.jpeg

相關問題