-4

ファイルにデータを書き込む必要があります。ループを使用してファイルにデータを書き込もうとしました。しかし、このコードを使用すると、ファイルごとに 1 行しか書き込まれません。

このコードを手伝ってください

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

または、ファイルの内容を置き換える代わりにファイルに追加するために、を再作成して2番目のコンストラクターパラメーターとしてFileWriter渡すこともできます。trueただし、ライターを作成するのは1回だけにすることをお勧めします。

于 2013-03-07T17:00:16.617 に答える