2014-03-02 72 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在这种情况下是不确定的行为。

如果您编写了这个示例程序来了解如何修改文件的内容,请提醒您不要直接“修改文件的内容”。

你应该做的是:

  • 建立在你写的内容修改另一个临时文件;
  • 确保临时文件“安全无害”;
  • 以原子方式将临时文件重命名为原始文件。

如果您不服从上述场景,您的原始文件以各种方式损坏的几率很高。

相关问题