2010-02-25 20 views
2

我正在研究一個小型的基本GUI程序,該程序從我的資源獲取文件並獲取文件的名稱並將它們放置在組合中框。例如,我只是在名爲圖像的相同包中有一個文件,並試圖獲取文件名。我得到的文件的方式是使用getResoure()像這樣嘗試使用列表中的list()或listFiles()來獲取文件中的文件

java.net.URL url = FileDemo.class.getResource("images"); 

,但是當我試圖讓該目錄裏的文件

File urlfile = new File(url.toString()); 

    String[] files = urlfile.list(); 

第一行的URL轉換爲字符串,創建一個文件對象,但當我嘗試獲取目錄中的文件列表時,它會向字符串數組返回一個空值。

我打破了代碼,並在netbeans中找到調試器,當它做SecurityManager檢查它不會通過。

我的問題是項目內的文件受保護或無法使用list()和listFiles()訪問它們,或者我做錯了什麼?我還在我的學校電腦上運行了同樣的腳本,他們使用Windows 7上面的代碼工作。但是當我在我的Mac上運行它,甚至是2臺win XP機器時,它只是無法工作?這是爲什麼 ?

我希望這是有道理的我只是堅持在這裏仍然是一個新到Java提前

感謝。

回答

2

getResource(String)這個類將URL返回給圖像,但不能保證這是一個文件URL(從「file:」開始)。如果你的類嵌入到一個jar文件中,這當然不會是這種情況,因此它在某些情況下失敗而不是其他情況。

如果你的意圖是讓用戶看到文件系統的一部分,那麼我建議完全避免使用getResource,當你的應用程序希望定位和加載資源,比如圖標或者配置時,這通常會更有用文件。

取而代之,您可以使用JFileChooser,這是一個豐富的Swing組件,用於瀏覽文件系統和選擇文件。

相關問題