2013-03-10 86 views
0

我有以下代碼閱讀資源最終空

System.out.println("Path::: "+path); 
InputStream resource = this.getClass().getResourceAsStream(path); 

現在的路徑是: 的src /資源/ FF/1-Battle.mp3

這是我的文件夾結構:

src 
|- resources 
| |- FF 
| | |- 1-Battle.mp3 
|- folder 
| |- prog.java <- this is the place where the code is run 

的問題是資源(輸入流)已經結束了空

這需要工作從一個jar文件,所以我需要它是相對的jar文件根目錄directoy不是硬盤目錄,因此我不能創建一個文件,因爲在一個jar文件裏,這些文件不能分類在java.io.File下

+0

你能證明你的變量'path'請 – Rob 2013-03-10 09:46:48

+0

嘗試改變從'SRC /資源/ FF/1-Battle.mp3'到'/ src目錄/資源/ FF/1-戰役的路徑? mp3'即從斜槓開始,表示您正在從項目根目錄搜索 – tmwanik 2013-03-10 09:56:58

+0

根目錄需要是相對的,以/開始從硬盤根目錄開始的路徑開始,因此我需要知道位置的jar文件 – mangusbrother 2013-03-10 11:20:09

回答

2

你爲什麼不能用FileInputStream來閱讀它?就像這樣: -

InputStream fileStream = new FileInputStream(new File(path)); 

並確保路徑是一個合適的相對URL。

0

您是否嘗試使用相對路徑來執行程序? Like'../../resources/FF/1-Battle.mp3「?

+0

如果你這樣做,你可以使用'File.separator'來代替/'。 – Rob 2013-03-10 09:40:30

0

它看起來像你試圖從jar文件中讀取mp3文件,因爲mp3文件在你的src文件夾中。這樣的:

try { 
     ClassLoader cl = this.getClass().getClassLoader();    
     InputStream resource = cl.getResource("resources/1-battle.mp3").openStream(); 
    } 
    catch(Exception ug) { 
     System.out.println("Failed to load mp3 from jar:" + ug.toString()); 
    }