4

次のコードがあります。

CSVmaker(LinkedList data) {
    String [] myLines = makeStrings(data);
  //  for (int k = 0; k<myLines.length; k++)
  //  System.out.println(myLines[]);




    this.file = new File("rawdata.csv");
        try {
            BufferedWriter buff = new BufferedWriter(new FileWriter(file));
            for (int i = 0; i<myLines.length; i++){
                buff.write(myLines[i]);
                buff.newLine();
                System.out.println("done");
            }
        } catch (IOException ex) {
          System.out.println("except");
        }



}

いいえ、myLines の内容を確認しましたが、正しいです。

また、必要なだけ頻繁に「完了」を印刷する印刷物を取得します。csv が作成されます。

ただし、手動で開くと空です。

この理由は何ですか?

4

4 に答える 4

14

バッファをフラッシュしたり、BufferedWriter を閉じたりすることはありません。

for ループの後、次の呼び出しを行います。

buff.flush();
buff.close();

他のリソースであっても、完了したら閉じることをお勧めします。

于 2013-09-02T13:05:13.403 に答える
4

close()使用後はストリームする必要があります。書き込みループ後に
呼び出します。buff.close()BufferedWriter は、閉じるときにデータをファイルにフラッシュします。

于 2013-09-02T13:05:29.417 に答える