0

14534 個の要素を持つ文字列 (Java) の配列があります。それらをファイル (csv) に書き込むと、ファイルは 13475 要素の後で停止します (行の途中ですが、特殊文字は表示されません)。

デバッガーで確認しましたが、配列は実際にいっぱいです。

別の方法を使用する必要がありますか? C ++ではバイナリを記述しますが、Javaで行う方法がわかりません。文字列が正しく認識されていないことが問題でしょうか?

FileWriter writer = new FileWriter("out.csv");

for (int i = 0; i < lines; i++){
    for (int j = 0; j < cols; j++){
        // writer.append(""+i);
        // writer.append("-");
        writer.append(""+numbers[j][i]);
        writer.append(';'); 
    }
    writer.append('\n');
}

奇妙なことに、(コメントで) 行をチェックするコードを追加すると、さらに約 12 行が書き込まれます。

何を試すべきかについての提案はありますか?

4

2 に答える 2

3

ファイルの内容を確認する前に、ライターをフラッシュまたはクローズしてください。おそらく不完全な出力はバッファリングによるものです。

于 2013-04-03T16:05:28.370 に答える
3

ライターを閉じることはありません-データがバッファに詰まっているだけだと思います。

呼び出しを追加すると、writer.flush()おそらくそれが表示されますが、実際には、try-with-resourcesステートメント (Java 7 を使用している場合) または try/finally ステートメントを使用して、常にライターを閉じる必要があります。

すべてのデータをファイルに書き込むことを確認するだけでなく、ファイルハンドルも解放することを意味します...

于 2013-04-03T16:05:39.447 に答える