Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JAVA中向序列化的ArrayList添加元素而不将ArrayList加载到RAM中_Java_Serializable - Fatal编程技术网

在JAVA中向序列化的ArrayList添加元素而不将ArrayList加载到RAM中

在JAVA中向序列化的ArrayList添加元素而不将ArrayList加载到RAM中,java,serializable,Java,Serializable,是否可以将元素添加到已序列化到磁盘的java数组列表中,而无需将其重新加载到RAM中。我需要它来保存XML文件中的结构化数据,以便将数据加载到mysql数据库中。XML文件有好几GB的数据,问题是我必须存储XML文件中的所有数据来处理数据?ArrayList,或者任何其他数据结构都是内存中的数据结构。因此,您希望在该数据结构中放入的任何内容都必须加载到内存(RAM)中 如果您想知道如何加载大于内存大小的数据,请考虑批处理加载。e、 g.加载符合内存约束的第一个n条目,然后对其进行处理。完成后,丢

是否可以将元素添加到已序列化到磁盘的java数组列表中,而无需将其重新加载到RAM中。我需要它来保存XML文件中的结构化数据,以便将数据加载到mysql数据库中。XML文件有好几GB的数据,问题是我必须存储XML文件中的所有数据来处理数据?

ArrayList
,或者任何其他数据结构都是内存中的数据结构。因此,您希望在该数据结构中放入的任何内容都必须加载到内存(RAM)中


如果您想知道如何加载大于内存大小的数据,请考虑批处理加载。e、 g.加载符合内存约束的第一个

n
条目,然后对其进行处理。完成后,丢弃这些文件并加载下一批,依此类推。

我认为,既然XML文件已经在GBs中,那么更好的方法是将XML文件分块读取,并将记录块保存到数据库中。继续这样做,直到达到EOF

String encoding = "UTF-8";
int maxlines = 100;
BufferedReader reader = null;
BufferedWriter writer = null;

try {
    reader = new BufferedReader(new InputStreamReader(new FileInputStream("/bigfile.txt"), encoding));
    int count = 0;
    for (String line; (line = reader.readLine()) != null;) {
        if (count++ % maxlines == 0) {
            close(writer);
            writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("/smallfile" + (count / maxlines) + ".txt"), encoding));
        }
        writer.write(line);
        writer.newLine();
    }
} finally {
    close(writer);
    close(reader);
}

ArrayList是否使用标准Java序列化进行序列化?另一种序列化方法?你自己的序列化?您必须将XML文件作为原始Java对象加载,还是可以使用标准XML工具进行处理?我想使用标准Java Serialization对其进行序列化。我正在逐行处理XML文件,因为将其加载到ram中太大了。我分析每个标记并将其存储在数组中,如果ram中的大小超过某个值,我想将这些数组序列化为磁盘上的对象好吧,我认为我必须这样做,但我希望有人知道以不同的方式这样做的可能性