1

我有一段代码等待数据来自不稳定的网络。运行代码的机器也可能随时停机。

所以我在程序运行时将传入的数据写入磁盘。如果系统出现故障,我将拥有到那时为止的数据。我可以将每个数据对象保存在单独的 JSON 文件中,但最终会包含数十万个文件。

我想做的是附加到一个可以作为数组或列表读回的 JSON 文件。每次数据进入时,它都会被写入末尾,而不会重新写入旧数据。最好的方法是什么?

4

2 回答 2

1

您可以创建一个FileWriter,true作为第二个构造函数参数。这使得 aFileWriter将附加到现有文件,而不是替换它(参见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 回答