使用for循环编写文件。但我无法做到

时间:2013-03-07 16:56:30

标签: java for-loop iterator filewriter

我必须将一些数据写入文件。我试图使用循环将数据写入文件。但是当我使用这段代码时,每个文件只写一行。

帮我解释这段代码

               Vector[] v = jca.getClusterOutput();
    for (int i=0; i<v.length; i++)
    {
        Vector tempV = v[i];
        System.out.println("-----------Cluster"+i+"---------");
        Iterator iter = tempV.iterator();



        while(iter.hasNext())
        {
            File file = new File("e://filename"+i+".txt");   
             FileWriter fw = new FileWriter(file.getAbsoluteFile());
            DataPoint dpTemp = (DataPoint)iter.next();
            System.out.println(dpTemp.getObjName()+"["+dpTemp.getX()+","+dpTemp.getY()+"]");
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write("\n"+dpTemp.getObjName()+"["+dpTemp.getX()+","+dpTemp.getY()+"]");

            //bw.close();
            bw.flush();

            System.out.println("Done");
        }

    }

1 个答案:

答案 0 :(得分:4)

好吧,你在每次迭代中都会覆盖文件。将文件创建,编写器创建等移出循环:

File file = new File("e://filename"+i+".txt");   
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);

while(iter.hasNext())
{           
        DataPoint dpTemp = (DataPoint)iter.next();
        System.out.println(dpTemp.getObjName()+"["+dpTemp.getX()+","+dpTemp.getY()+"]");

        bw.write("\n"+dpTemp.getObjName()+" ["+dpTemp.getX()+","+dpTemp.getY()+"]");                        
}
//bw.close();
bw.flush();
System.out.println("Done");

或者,您可以重新创建FileWriter并将true作为第二个构造函数参数传递,以便附加到文件而不是替换其内容。但是,我建议只创建一次编写器。