2017-10-09 97 views
1

我試圖在文件中的每行末尾添加關鍵字null(更具體地說是,null)。我嘗試了下面提到的代碼,但對文件沒有影響。 注意:TESTFILE是一個有10行的現有文件,我必須在每行末尾附加,null迭代文件中的行並在每行末尾添加空值

final String FILENAME = "D:\\TESTFILE" 
FileWriter fileWriter = new FileWriter(FILENAME, true); 
BufferedWriter bw = new BufferedWriter(fileWriter); 
FileReader fileReader = new FileReader(FILENAME); 
BufferedReader br = new BufferedReader(fileReader); 
PrintWriter printWriter = new PrintWriter(bw); 
String line; 

while ((line = br.readLine()) != null) { 
     printWriter.println(",null"); 
    } 
} 
+0

try printWriter.println(line +「,null」); –

+1

您無法同時讀取和寫入同一個文件。在寫入文件之前完全讀入文件或寫入另一個(臨時)文件,刪除原稿並在寫入後重命名副本。 –

回答

3

這裏的問題是,您正試圖在同一時間讀取和寫入同一個文件,這將無法正常工作,您需要單獨執行此操作。

  1. 閱讀文件。
  2. 更新每一行內容。
  3. 將更新的行保存到新的臨時文件。
  4. 保存此新的臨時文件並在讀完所有行後刪除原始文件。
  5. 最後,將臨時文件重命名爲原始文件名。

您可以檢查Modifying existing file content in Java關於如何實現它的詳細信息。

0

正如在其他答案中所述,確保您從一個文件讀取並寫入另一個文件。這是一個好主意,因爲你在犯小錯的時候不會鬆動原來的東西。當然,您也可以在完成後刪除備份文件,這取決於您。

import java.io.IOException; 
import java.io.PrintWriter; 
import java.nio.file.Files; 
import java.nio.file.Path; 
import java.nio.file.Paths; 
import java.nio.file.StandardCopyOption; 
import java.nio.file.StandardOpenOption; 

public class Modify { 
    public void modify(Path file, String append) throws IOException { 
     Path backup = file.resolveSibling(file.getFileName().toString() + "~"); 
     Files.move(file, backup, StandardCopyOption.REPLACE_EXISTING); 

     try (PrintWriter writer = new PrintWriter(Files.newBufferedWriter(file, StandardOpenOption.CREATE))) { 
      Files.lines(backup) 
       .map(l -> l.concat(append)) 
       .forEach(writer::println); 
     } 
    } 

    public static void main(String... args) throws IOException { 
     new Modify().modify(Paths.get("/path/to/whatever"), ",null"); 
    } 
} 

但是,說實話,在10線文件中添加,null,我會手動/做到這一點通過複製粘貼。

相關問題