-4

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

帮我处理这段代码

               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");
        }

    }
4

1 回答 1

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");

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

于 2013-03-07T17:00:16.617 回答