1

私の問題は、csvファイルをいっぱいにすることですが、コードを実行してcsvを空にしてから新しいデータを書き込むたびに必要です。

このメソッドは、コードを実行するたびに FOR ループで本体から呼び出されます...

public static void csv_output() throws Exception {
  FileWriter fw = new FileWriter("output/out.csv", true);
  //true refers to append
  PrintWriter pw = new PrintWriter(fw, false);
  //pw.flush();
  //clears the Buffer
  if (Auctionhouse.current_epoch == 1) {
    pw.print("Epoch");
    pw.print(",");
    for (int j = 0; j < Run_process.total_Agents; j++) {
      pw.print(Chromosome.chromosome.get(j).ID + "_Balance");
      pw.print(",");
    }
    for (int k = 0; k < Stockhouse.total_stocks; k++) {
      pw.print(Stockhouse.stockP.get(k).stock_Id);
      pw.print(",");
    }
  }
  pw.println();
  pw.print(Auctionhouse.current_epoch);
  pw.print(",");
  for (int i = 0; i < Run_process.total_Agents; i++) {
    String ag = Portfolio.Agent_balance.get(i) + "";
    pw.print(ag);
    pw.print(",");
  }
  for (int j = 0; j < Stockhouse.total_stocks; j++) {
    String pr = Auctionhouse.total_prices.get(Auctionhouse.current_epoch - 1).get(j) + "";
    pw.print(pr);
    pw.print(",");
  }
}
pw.flush();
pw.close();
fw.close(); 

フラッシュが機能しません。

PS: すべてのループでデータを書き込めるように追加したいと思います。

4

2 に答える 2

1

私が理解している限り、for ループに入る前に空の「output/out.csv」ファイルが必要です。したがって、プログラムの開始時にファイルを削除するだけです-存在する場合。

File outFile = new File("output/out.csv");

// delete out file if it exists
if (outFile.exists()) {
    System.out.println("Old out.csv file exists. Removing...);
    outFile.delete();
}
于 2013-04-16T13:48:59.027 に答える