繁体   English   中英

将许多XML(文件对象)转换为具有所有文件内容的单个字符串

[英]Transforming lots of XMLs (File objects) into a single String with all the files' contents

什么是执行转换(最多容纳500个XML文件,每个大小最大为50 Mb并从其中制作单个String)的最有效(性能方面)的干净方法。 所有文件都是XML,需要保留格式等。

我当前正在使用XMLEventReader和XMLEventWriter进行读取,一次读取一个事件,并使用StringBuilder连接所有String结果。 然后在方法末尾将其放入String中,但是由于IDE中缺少Java堆空间(在500个文件之前)而崩溃。

谢谢 !

此String对象的大小最大为50 GB(50 MB * 500 * 2)。 您知道吗?

在谈论输入文件并希望将序列化的xml数据保留在String中时,您不必解析文件,而只需将文件内容附加到StringBuilder。

假设所有文件都在一个文件夹中,并且在commons-io的帮助下,应该这样做(...在我的机器上没有4 GB Ram,btw):

 File[] files = parentFolder.list();
 StringBuilder veryVeryBigBuilder = new StringBuilder();
 for (File file: files) {
   if (isXmlFile(file)) {
      veryVeryBigBuilder.append(FileUtils.readFileToString(), encoding);
   }
 }

您真的需要担心它们是XML吗? 您不能使用BufferedReader逐行依次读取每个文件,而只是将所有行输出到PrintWriter吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM