我必须将一些数据写入文件。我试图使用循环将数据写入文件。但是当我使用这段代码时,每个文件只写一行。
帮我解释这段代码
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");
}
}
答案 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
作为第二个构造函数参数传递,以便附加到文件而不是替换其内容。但是,我建议只创建一次编写器。