2013-05-25 94 views
0

我寫了一個java應用程序,它讀取一個文件(files/olten)並在這個文件中顯示信息。 (在JTable中)。 我現在有更新文件中的信息的問題,以便操作不會丟失,並且在下一次打開程序時仍然存在。在jar裏創建/更新文件

我已經嘗試了很多事情來指定文件的路徑,但沒有任何工作。這裏是什麼,我嘗試了一些樣本:

out = new PrintWriter(new File("").getAbsolutePath() + "/files/olten"); 
out = new PrintWriter(this.getClass().getClassLoader().getResource("files/olten").toString()); 
out = new PrintWriter("olten"); 

正確的路徑(從java文件的路徑來看)「文件/奧爾滕」。 我該如何實現修改這個文件?

在此先感謝!

+1

與[this]類似(http://stackoverflow.com/questions/5052311/how-can-a-java-program-use-files-inside-the-jar-for-read-and-write)和[本](http://stackoverflow.com/questions/1224817/modifying-a-file-inside-a-jar)。 – Zong

回答

0

你可能想使用FileWriter的看看這個例子:

try { 
    PrintWriter writer = new PrintWriter(new FileWriter("files/olten/TextFile.txt",true)); 
    writer.println("Some text"); 
    writer.flush(); 
    writer.close(); 
    System.out.println("Writed"); 
    } catch (IOException ex) { 
     //write your own message 
    } 

注意
參數true表示該數據將被寫入文件,而不是開始的結束。

+0

除非'FileWriter'這樣做,否則這不會解決他的主要問題,即修改jar中的文件。 – Zong

+0

@宗立:但是我說過他不會使用* FileWriter *他的問題不會解決嗎?不,實際上,* PrintWriter *中有另外7個構造函數,可以使用不同的參數。 – Azad

+0

你的措辭有點令人困惑,但它在邏輯上等同於「我沒有說如果他使用FileWriter,他的問題就會解決」。那麼,提出切合的建議並不足以作爲答案。它沒有解決他真正的問題。 – Zong

0

向資源文件寫入部分可分發jar文件可能不是正確的做法。 你可能想嘗試這樣的事情,但結果可能會有所不同,這取決於你可能想如何使用你的jar。

URL url = getClass().getResource(relative_path); 
File file = new File(url.toURI()); 
OutputStream output = new FileOutputStream(file); 

還不推薦!!

+0

你有任何證據證明這是有效的嗎?我覺得它不太可能。 – Zong