gpt4 book ai didi

java - 从 java : OutOfMemory 中的 xml 解码大型 base64

转载 作者:数据小太阳 更新时间:2023-10-29 02:32:14 26 4
gpt4 key购买 nike

我需要将 xml 文件的 base64 编码元素写入一个单独的文件。问题:该文件很容易达到 100 MB 的大小。我尝试的每个解决方案都以“java.lang.OutOfMemoryError:Java 堆空间”结束。问题不是一般读取 xml 或解码过程,而是 base64 block 的大小。

我使用了 jdom、dom4j 和 XMLStreamReader 来访问 xml 文件。但是,一旦我想访问相应元素的 base64 内容,就会收到上述错误。我还使用 saxon 的 base64Binary-to-octets 函数尝试了一个 xslt,但结果当然相同。

有没有一种方法可以将这个 base64 编码的部分流式传输到一个文件中,而无需将整个 block 合并为一个文件?

谢谢你的提示,

安德烈亚斯

最佳答案

Apache Commons Codec有一个Base64OutputStream ,这应该允许您通过将 Base64OutputStreamFileOutputStream 链接起来,以可扩展的方式提供 XML 数据。

您需要将 XML 表示为字符串,因此您甚至可能根本不必将其读入 DOM 结构。

类似于:

PrintWriter printWriter = new PrintWriter(
new Base64OutputStream(
new BufferedOutputStream(
new FileOutputStream("/path/to/my/file")
)
)
);
printWriter.write(myXml);
printWriter.close();

如果输入的 XML 文件太大,那么您应该在循环中将其中的 block 读入缓冲区,将缓冲区内容写入输出(即标准的读取器到写入器副本)。

关于java - 从 java : OutOfMemory 中的 xml 解码大型 base64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5832123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com