2013-05-19 83 views
1

首先,我是Java的新手。我已經爲自己設定了一個小項目,目前我陷入困境。我正在嘗試寫入已存在的文件,但它只是覆蓋它。我試圖替換包含'maxBooks'的行。用Java寫入文件

這是比我使用的代碼:

FileWriter writeFile = new FileWriter(fileLocation); 
      BufferedReader readLines = new BufferedReader(new FileReader(fileLocation)); 
      BufferedWriter writeLines = new BufferedWriter(writeFile); 

      System.out.println("\n-----File Begin-----"); 

      while((finalLines = readLines.readLine()) != null){ 

       if(finalLines.contains("maxBooks")){ 
        writeLines.newLine(); 
        writeLines.write(finalLines); 

        System.out.println("This is the if statement"); 
        System.out.println(finalLines); 
       } else { 
        fileLines.add(new String(finalLines)); 
        System.out.println("This is the else statement"); 
        System.out.println(finalLines); 
       } 
      } 

      System.out.println("------File End------"); 

請記住,我已經離開了try和catch。請讓我知道如何編輯文本文件。讓我知道如果你需要任何更多的信息

謝謝:)

編輯

對不起,我應該澄清。我只是試圖編輯測試文件中的1行,而不是整個文本文件。

最終代碼:

​​
+0

的Java版本是您使用?如果你使用7,你可以使用Java.NIO來實現這一點。 – Makoto

+0

_I我試圖寫入一個已經存在的文件,但它只是覆蓋它_,不清楚你的意思是什麼(代碼做它做什麼)。也許給一個簡短的例子,你期望什麼,你會得到什麼。 – PeterMmm

+1

嘗試使用FileWriter writeFile = new FileWriter(fileLocation,true); –

回答

3

您覆蓋嘗試讀取這個文件,這是不好的做法。寫入一個新文件,然後重命名爲原始文件。

+0

謝謝@fge,它像夢一樣工作,我的更新代碼在我的問題中。再次感謝 :) – Melloorr

0

你讀寫的是相同的fileLocation你應該給兩個differend位置;

是這樣

//define newLocation as string that contain path for new file to be written  
FileWriter writeFile = new FileWriter(newLocation); 
       BufferedReader readLines = new BufferedReader(new FileReader(fileLocation)); 
       BufferedWriter writeLines = new BufferedWriter(writeFile);