2012-03-14 48 views
1

我有一個安裝程序,在該程序中我使用了一個txt文件(讀取和寫入它)。目前我已經安裝了這樣的設備,以便在我的機器上使用本地文件路徑,但是我需要將它打包到可執行JAR中。要做到這一點,我已經試過了以下交換文件路徑字符串:使用getResource()與txt文件(Java)的問題

String filepath = MyClass.class.getResource("/resources/textfile.txt"); 

然而,當我運行此,我收到了一堆錯誤。谷歌搜索後,我發現了類似的方法getResourceAsStream,我也嘗試過。這似乎返回一個InputStream對象,但我需要理想的文件路徑作爲一個字符串。這可能嗎?如果不是我的選擇是什麼?

附加信息:

這裏是試圖讀取&寫txt文件,當我收到錯誤消息:

java.io.FileNotFoundException:/Users/Fred/Documents/Eclipse%20Projects/RandomProject/bin/resources/textfile.txt (No such file or directory) 
+0

未來,請詳細說明錯誤,而不是隻說「我得到一堆錯誤」。請閱讀http://tinyurl.com/so-hints – 2012-03-14 18:31:43

回答

3

,那麼您已經給出的代碼將無法編譯,因爲Class.getResource返回URL,而不是一個String。您不能將資源視爲「僅僅是另一個文件」 - 因爲它不是。

你應該根本上改變什麼需要閱讀該文件以接受InputStream,而不是一個文件名,然後通過呼籲getResourceAsStream()的結果。

1

該方法返回URL,不串。它的簽名是public URL getResource(String name)

你可能想要做的:

String filepath = MyClass.class.getResource("/resources/textfile.txt").getPath(); 
+0

感謝您的評論,但是當我嘗試使用文件路徑時,它拋出了java.io.FileNotFoundException,儘管事實上文件路徑是100%正確的,我已經檢查它。這有什麼原因會發生? – 2012-03-14 18:41:24

0

如果您希望直接寫入JAR中的文本文件,那麼我的朋友一直都是錯的!請張貼更多的代碼,讓我們瞭解您想要達到的目標以及您認爲可以完成的目標。

1

我有一個在我的程序中使用txt文件(包括讀取和寫入)的設置。

僅供閱讀,資源可位於應用程序類路徑上的Jar中。應用程序類路徑上的資源非常少(在生產中)是可寫的。這個文本文件很可能需要放在可複製的路徑中(例如,子目錄user.home - 其中子目錄基於包名稱)並用作該路徑的File

或者換一種說法。我認爲你正在追求錯誤的道路,以實現目標。

+1

好點:應該克隆JAR中的原始文件以在用戶空間中生成工作副本。 – trashgod 2012-03-15 07:49:06

+0

@trashgod是啊,你說什麼 - *「克隆在用戶空間中生成工作副本」*。我試圖想到這些話,但他們躲過了我。 ;) – 2012-03-15 08:03:15