2013-02-09 112 views
0

我創建了一個臨時文件,寫入它覆蓋文件java和我想覆蓋現有文件錯誤在我的代碼

  1. 創建臨時文件
  2. 加滿
  3. 打開老文件
  4. 設置舊文件等於新

這裏是我的代碼,但它不工作

請讓我知道,如果你能找到問題。 謝謝!

try{ 
      //create a temporary file 
      File temporary=File.createTempFile("tmp", ""); 
      BufferedWriter writer = new BufferedWriter(new FileWriter(temporary)); 
      //Write each line to file (temporary) 
      for (String string : parsedArticlesToSave) { 
       writer.write (String.format("%s\n", string)); 
      } 
      //load old file 
      File oldFile = new File("StringFile/ArticlesDB.txt"); 
      //replace old file with new file 
      oldFile=temporary; 
      //release resources 
      writer.close(); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
+0

[複製](http://stackoverflow.com/questions/9887520/java-create-temp-文件替換原件) – Jayamohan 2013-02-09 02:54:45

+0

什麼是錯誤? – Walfie 2013-02-09 02:56:20

+0

它不會對文件進行更改。我認爲這是oldFile =臨時;在java中這是合法的嗎? – 2013-02-09 02:57:25

回答

1

我想你誤會 類java.io.File

的整體概念和不瞭解的Java變量賦值的概念。

使這一類的對象的java.io.File創建該文件的一種指針,這樣就可以用它運行「​​在整個」

所以,你做了什麼用「的oldfile =臨時」只是讓你指向oldFile指向臨時指針。但是這只是在Java中的變量賦值的情況下完成的,它對實際的文件系統沒有任何影響。

現在關於變量賦值。

與對象把它: 可以說,你有兩個整數:

Integer a = 5; 
Integer b = 10; 

通過做「B = A」你不真正改變對象B本身,而是你的參考對象B變對象a的引用。對象b的舊值仍然存儲在內存中,但是由於賦值後沒有人指向(指向)它,所以它變得不可訪問並且最終將被垃圾收集。

現在,關於解決方案本身: 你真的應該由線 逐字節的文件臨時的內容複製到舊線),或者如果你只是想使舊文件具有相同的內容和你並不需要臨時文件來刪除文件,然後將臨時文件 重命名爲'oldFile'。

下面是如何在Java中使用重命名鏈接: Renaming in Java

希望這有助於