如何使用序列化处理和保存大文件?

时间:2016-08-22 12:46:42

标签: java xml csv serialization bigdata

我想读一个大文件(它不能作为对象放在堆中)。我必须逐行阅读,处理每一行,然后保存(追加)到一个新文件中。

我完成了第一步(加载和处理)并在控制台上打印输出。我不创建数据对象。 我想我必须动手做,但我不知道可能有用的库。

我还想添加XML或CSV序列化 你知道一些可以解决这个问题的库吗?

for (String line; (line = bufferedReader.readLine()) != null; ) {
     String processedNewLine = processLine(Line);
     //and I would like to serialize to XML (append)
     XMLSerialiazer.serialize(processedNewLine, xmlTemp.getPath());

}

3 个答案:

答案 0 :(得分:0)

如果您使用.csv文件,则只需逐行阅读即可。没有必要使用特殊的库,你也可以使用非常大的文件而没有问题。

如果您使用.xml文件,则需要SAX parser。基本上,SAX解析器是一个解析器,它对事件(如开放标记,关闭标记)进行操作,而不是像在DOM解析器中那样在内存中构建整个结构。

答案 1 :(得分:0)

如果您正在寻找使用可用XML序列化库的替代方法,请从google查看protocol buffers

Tutorial

Git source

答案 2 :(得分:0)

您应该查看Kryo,这是最快的序列化库之一。