BufferedWriter覆盖自己

时间:2013-10-22 15:34:19

标签: java

我想读取文件并创建文件的副本,但我的代码只写了文件的最后一行。我如何制作,以便每当我调用write()时,它都会写入新行。我想为副本创建一个新文件,因此我无法将{true}添加到FileWriter构造函数。

这是我的代码:

    //Create file reader
    BufferedReader iReader = new BufferedReader(new FileReader(args[1]));

    //Create file writer
    BufferedWriter oWriter = new BufferedWriter(new FileWriter(args[2], true));

    String strLine;
    //reading file
    int iterate = 0;
    while((strLine = iReader.readLine()) != null)  {
        instructions[iterate] = strLine;
    }

    //creating duplicate
    for(int i = 0; i < instructions.length; i++) {
        if(instructions[i] != null) {
            oWriter.write(instructions[i]);
            oWriter.newLine();
        }  else {
            break;
        }
    }

    try {
        iReader.close();
        oWriter.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

2 个答案:

答案 0 :(得分:3)

您没有递增iterate

 int iterate = 0;
 while((strLine = iReader.readLine()) != null)
{
    instructions[iterate] = strLine;
    iterate++;
}

答案 1 :(得分:0)

您没有更新instructions数组的索引。

此外,目前还不清楚为什么要以这种方式复制文件;为什么要一行一行呢?或者只使用实用程序类,例如Apache Commons。