1

不安定なネットワークからデータが来るのを待つコードがあります。コードを実行するマシンも、いつでもダウンする可能性があります。

そのため、プログラムの実行中に着信データをディスクに書き込んでいます。システムがダウンした場合、その時点までのデータが残っています。各データ オブジェクトを個別の JSON ファイルに保存できますが、それでは何十万ものファイルになってしまいます。

私がやりたいことは、配列またはリストとして読み戻すことができる 1 つの JSON ファイルに追加することです。データが来るたびに、古いデータを書き直すことなく、最後まで書き込まれます。それを行う最善の方法は何ですか?

4

2 に答える 2

1

2 番目のコンストラクター引数としてFileWriterを作成できます。trueこれにより、FileWriter既存のファイルを置き換えるのではなく、追加する が作成されます ( http://docs.oracle.com/javase/7/docs/api/java/io/FileWriter.htmlを参照)。

于 2013-09-17T04:03:22.933 に答える
0

メソッドは OrigArray の値を変更しません。クローンのクローンを格納するだけなので、実際には値は変更されません。

あなたが望むのはこれだと思います:

public void expand() {
    String[] newArray = new String[OrigArray.length + 1];
    System.arraycopy(OrigArray, 0, newArray, 0, OrigArray.length);

    //an alternative to using System.arraycopy would be a for-loop:
    // for(int i = 0; i < OrigArray.length; i++)
    //     newArray[i] = OrigArray[i];
    OrigArray = newArray;
}

これにより、OrigArray より 1 大きいサイズの配列が作成され、OrigArray の内容がコピーされ、その配列が OrrigArray に割り当てられます。expand() が呼び出された回数を覚えておきたい場合を除き、サイズを可変にする理由はありません。

于 2013-09-17T04:05:22.047 に答える