执行最多 500 个 XML 文件(每个大小最多 50 Mb)的转换并从中生成单个字符串的最有效(性能方面)和简洁的方法是什么。所有文件都是XML,需要保留格式等。
我目前正在使用 XMLEventReader 进行读取,然后使用 XMLEventWriter 进行读取,一次读取一个事件并使用 StringBuilder 连接所有字符串结果。 然后在方法末尾将其转换为 String,但这会由于 IDE 中缺少 Java 堆空间而崩溃,远远早于 500 个文件...
谢谢!
最佳答案
此字符串对象的大小最大为 50 GB (50 MByte * 500 * 2)。你知道这一点,是吗?
当您谈论输入文件并希望将序列化的 xml 数据保留在字符串中时,您不必解析文件,而只需将文件内容附加到 StringBuilder 即可。
假设所有文件都在一个文件夹中,并且在 commons-io 的帮助下,这应该可以做到(...不是在我的 4 GB RAM 的机器上,顺便说一句):
File[] files = parentFolder.list();
StringBuilder veryVeryBigBuilder = new StringBuilder();
for (File file: files) {
if (isXmlFile(file)) {
veryVeryBigBuilder.append(FileUtils.readFileToString(), encoding);
}
}
关于java - 将大量 XML(文件对象)转换为包含所有文件内容的单个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3726050/