2011-04-03 93 views
3

當前,在我的eclipse項目中,我有一個我寫入的文件。但是,我已將項目導出到JAR文件,並且寫入該目錄不再有效。我知道我需要將此文件作爲類路徑資源來處理,但是如何使用BufferedWriter執行此操作?Java JAR:寫入文件

回答

5

您不應該將其視爲要寫入文件的類路徑資源。如果文件在您的JAR文件中,但您不想寫入包含在JAR文件中的文件,那麼您只需要這樣做?

您應該仍然可以創建並寫入文件,但它可能與工作目錄相關 - 即執行JAR文件的目錄(除非使用絕對路徑)。在eclipse中,從運行配置對話框中配置工作目錄。

+0

確實,錯誤的措辭。我修好了它。 – squawknull 2011-04-03 06:33:12

0

這樣的資源(當被更改時)最好存儲在user.home的子目錄中。這是用戶應該有權訪問的可重複路徑。您可以使用主類的包名稱作爲子目錄的基礎。例如。

our.com.Main -> ${user.home}/our/com/ 
+0

更好地寫入當前目錄。我討厭這些面向* nix的程序,他們認爲他們可以並且應該將各種各樣的垃圾寫到我的主目錄中,並且他們希望如何。 – 2011-04-03 06:32:43

+0

@Software Monkey你有什麼建議呢? 'user.dir'不穩定,class/Jar文件的磁盤位置不適用於任何* JWS應用程序。或小程序。 – 2011-04-03 07:05:21

1

您可能正在使用Linux。因爲在Linux中,當您從JAR啓動應用程序時,工作目錄將設置爲您的主文件夾(/ home/yourname /)。從Eclipse啓動時,工作目錄設置爲項目文件夾。

要確保您確實知道您使用的文件位於項目文件夾或您的JAR所在的文件夾中,您可以使用這段代碼知道JAR所在的位置,然後使用File(File parent, String name)構造函數來創建你的文件:

// Find out where the JAR is: 
String path = YourClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath(); 
path = path.substring(0, path.lastIndexOf('/')+1); 
// Create the project-folder-file: 
File root = new File(path); 

而且,從現在開始,你可以創建你所有的文件是這樣的:

File myFile = new File(root, "config.xml"); 

當然,root必須是在你的範圍。