将文件写入数组它只写入我数组中的最后一条记录

Writing file to array it writes only last record in my array

我想将我的控制台行打印到 txt file.I 想在 else 中执行此操作 statement.But 它只在最后写入文件 record.How 我可以修复它吗?当我尝试缓冲 reader 它无法解决我的 problem.Thanks everybody.Have 一个好的 day.Which 解决方案你对我有什么建议吗?

for(int iy=0;iy<arr.length;iy++){

    if( arr[iy].contains("•") || arr[iy].contains("Contact") || arr[iy].contains("@") || arr[iy].contains("Activities and Societies") || arr[iy].contains("Page")){

    }               
    else if(arr[iy].contains("Summary")){
        //System.out.println(arr[iy]+"enes");
        while(exit==false){
            iy++;

            if(arr[iy].contains("Experience")){
                exit=true;
            }
        }           
    }               
    else if(arr[iy].contains("Skills") || arr[iy].contains("Languages")){

        while(exit==false){
            iy++;

            if(arr[iy].contains("Education")){
                exit=true;
            }
        }
    }                               
    else  
    {                   
        System.out.println(arr[iy]); 

        try(PrintWriter bw = new PrintWriter(new FileWriter(FILENAME2))){

            bw.write(arr[iy]);
            //out.newLine();
            bw.flush();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }                       
}

看起来您在循环的每一步都重新创建了 PrintWriter,这会覆盖文件。在循环之前创建它并在之后关闭它。

你的代码很复杂,但是只写最后一行的原因很清楚——你打开文件为每一行输出,并覆盖文件以前的内容。

  • 您不应该为每一行打开和关闭文件。循环前打开一次,循环后关闭

  • 如果多次打开和关闭文件确实有意义,您应该在附加模式下打开 FileWriter(通过使用 new FileWriter(FILENAME2,true))。