将文件的内容复制到同一文件

时间:2014-03-02 15:33:02

标签: java file bufferedreader bufferedwriter

这里我要复制文件的内容并将其写入同一个文件

我在文本文件中有四行,当我执行以下程序时 我得到空白文本文件

但是br1.readLine读取一行并通过清除其中的内容写入文件,它必须写入至少一行然后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();
  }
}

有人能解释一下吗?

2 个答案:

答案 0 :(得分:2)

解释:不要那样做

文本编辑从来没有这样做。

第一个问题:在没有boolean参数的文件上打开new FileWriter();默认情况下,此类将截断目标文件

第二个问题:即使你 在附加模式中打开FileWriter,在这种情况下FileReader的行为也是未定义的。

如果您编写此示例程序以了解如何修改文件的内容,请提醒您不要从字面上理解“修改文件内容”。

你应该做的是:

  • 创建另一个临时文件,在其中编写修改后的内容;
  • 确保临时文件“安全无虞”;
  • 以原子方式将临时文件重命名为原始文件。

如果您不遵守上述情况,原始文件可能以各种方式损坏的可能性很高。

答案 1 :(得分:0)

在同一个(args [0])元素(同一个文件)上打开文件阅读器和编写器。