【问题标题】:Writing a file using for loop. But I am not able to do it [closed]使用 for 循环编写文件。但我做不到[关闭]
【发布时间】:2013-03-07 16:56:30
【问题描述】:

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

帮我看看这段代码

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

    }

【问题讨论】:

  • 每次循环时都会创建一个新文件。把文件 file = new File(...);更高。
  • 我试过了,但打印还是一样
  • 你需要把它放在for循环之外。

标签: java for-loop iterator filewriter


【解决方案1】:

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

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 作为第二个构造函数参数传递,以便附加到文件而不是替换其内容。但是,我仍然建议只创建一次作家。

【讨论】:

  • @Thomas 感谢您的善意
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多