-4

I have to write some data to files. I tried to write data to files using loops. But When I used this code it writes just one line per file.

help me with this code

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

    }
Samantha Cool
  • 69
  • 1
  • 10

1 Answers1

4

Well, you're overwriting the file in every iteration. Move the file creation, writer creation etc. out of the loop:

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

Alternatively, you could recreate the FileWriter and pass true as the second constructor parameter, in order to append to the file instead of replacing its content. However, I'd sill recommend creating the writer only once.

Thomas
  • 87,414
  • 12
  • 119
  • 157