我需要根据条件将一行从文件复制到另一个
这是我的代码

     import org.apache.commons.io.FileUtils;

     public class FileCopy {

public static void main(String args[]) throws IOException {

    File source = \\
    File fileToCopyFrom \\
    File target :\\
    if (!target.exists()) {
        target.createNewFile();
    }

    PrintStream fstream =new PrintStream(target);
    BufferedReader brSource = new BufferedReader(new FileReader(source));
    BufferedReader brFileToCopyFrom = new BufferedReader(new FileReader(fileToCopyFrom));

    String lineSource;
    String lineToCopy;

    while((lineSource = brSource.readLine()) != null) {

          while ((lineToCopy=brFileToCopyFrom.readLine())!=null) {
    if (lineToCopy.contains(lineSource.substring(lineSource.indexOf("_")+1, lineSource.indexOf(".")-1)))
                fstream.println(lineToCopy);
            }

        }
}}


但它只复制第一行
错误在哪里?

最佳答案

仅复制第一个,因为在第一个while的第二次迭代中,brFileToCopyFrom到达了文件末尾。

您需要在第一个BufferedReader brFileToCopy(示例1)内打开while或使用mark/reset功能(示例2)。

范例1:

while ((lineSource = brSource.readLine()) != null) {

        BufferedReader brFileToCopyFrom = new BufferedReader(new FileReader(fileToCopyFrom));

        while ((lineToCopy = brFileToCopyFrom.readLine()) != null) {
            ...
        }

    }
}


范例2:

brFileToCopyFrom.mark(1024); // number of characters to be read while preserving the mark

while ((lineSource = brSource.readLine()) != null) {

        brFileToCopyFrom.reset();

        while ((lineToCopy = brFileToCopyFrom.readLine()) != null) {
            ...
        }

    }
}

07-27 18:38