2016-02-05 72 views
0

我想了解使用內部文件編寫java項目的最佳或標準技術。準確地說,我想開發一個使用程序運行時所需的文本文件和圖像的項目。我的目標是從項目中創建一個可運行jar,用戶無需查看所有這些文件。因此,我決定創建一個名爲resources的包,並將其放入包含源代碼的文件夾中。即它與其他軟件包處於同一水平。現在,在我的代碼中,當我想使用圖像時,我使用以下語句: URL url = getClass()。getResource(「/ resources/image1.gif」); 它正在工作! 然後,要打開一個文本文件進行讀/寫,我使用以下內容:
String filename =「/resources/"+file1.txt; 現在,這是行不通的,它抱怨說它無法找到該文件。我不知道如何去做這件事? 谷歌搜索建議我把資源文件夾放在項目根目錄下。它正在工作,但當我創建可運行jar時,我不得不將資源文件夾放在與jar相同的目錄中。這意味着用戶可以訪問那裏的所有文件。任何幫助深表感謝。如何創建使用文件和圖像的可運行jar作爲

回答

0

您也可以使用getResource方法。

URL url = getClass().getResource("/resources/file1.txt"); 
try { 
    File f = new File(fileUrl.toURI()); 
} catch (URISyntaxException e) { 
    //dealing with the exception 
} 
+0

感謝德米特里的幫助。它仍然不適合我! – MM1391

+0

@ MM1391那麼你有什麼錯誤? –

+0

我有以下代碼:String file =「resources/file1.txt」; \t \t java.net.URL url = getClass()。getClassLoader()。getResource(file); \t \t文件f = null; \t \t嘗試{ \t \t \t f = new File(url.toURI()); \t \t}趕上(E1的URISyntaxException){ \t \t \t // TODO自動生成的catch程序塊 \t \t \t e1.printStackTrace(); \t \t} \t \t String fileName = f.getAbsolutePath(); System.out.println(「File Name:」+ fileName);它在IDE中工作正常;我在Windows上使用Eclipse,但是當我使用它時,程序不會打印最後一條語句並暫停。 – MM1391

相關問題