2014-03-02 125 views
1

在這裏,我想複製一個文件的內容,並將其寫入到同一個文件複製內容到同一個文件

我在文本文件中四行,當我執行以下程序 我得到空白的文本文件

但br1.readLine讀取一行,並通過它清除的內容寫入文件,必須寫一個ATLEAST行,然後while循環應該結束..

,但我得到一個空白的文本文件.. !!!!

import java.io.*; 

class ConsoleIo { 
    public static void main(String args[]) 
    throws IOException,FileNotFoundException { 
    System.out.println("hi"); 
    int a; 
    char b; 
    String c; 
    BufferedReader br1; 
    BufferedWriter br2; 
    br1 = new BufferedReader(new FileReader(args[0])); 
    br2 = new BufferedWriter(new FileWriter(args[0])); 
    while ((c = br1.readLine()) != null) { 
     br2.write(c); 
    } 
    br1.close(); 
    br2.close(); 
    } 
} 

任何人都可以解釋一下嗎?

+0

如何將一杯水倒入同一杯中?你在這裏做類似的事情。 –

回答

0

您在同一個(args [0])元素(相同的文件)上打開文件讀取器和寫入器。

2

解釋:不這樣做

文本編輯器從來沒有這樣做的原因。

第一個問題:您在沒有布爾參數的文件上打開new FileWriter();默認情況下,這個類會將截斷目標文件

問題二:即使你沒有以附加模式打開FileWriter,您FileReader在這種情況下是不確定的行爲。

如果您編寫了這個示例程序來了解如何修改文件的內容,請提醒您不要直接「修改文件的內容」。

你應該做的是:

  • 建立在你寫的內容修改另一個臨時文件;
  • 確保臨時文件「安全無害」;
  • 以原子方式將臨時文件重命名爲原始文件。

如果您不服從上述場景,您的原始文件以各種方式損壞的機率很高。

相關問題