java - 将 InputStream 对象转换为 String 的最佳方法

标签 java string inputstream

我有一个InputStream XML 中包含数百万个文件信息(名称、创建日期、作者等)的对象格式。我已经尝试将其转换为 String使用IOUtils.copy方法,但由于该信息的大小相当大,它会抛出 java.lang.OutOfMemoryError ,运行几分钟后。

增加JVM内存不是一个选项,因为我从中收集信息的文件数量一直在增加。那么有人可以建议我应该做什么来解决这个问题吗?

最佳答案

您遇到的问题是基于流的 IO 存在的原因,在使用大量数据之前将其放入内 stub 本不可行。

将您的流解析为...流!请参阅Oracle tutorials有关使用 SAX 进行基于流的 XML 解析的更多信息。

XMLReader xmlreader =
    SAXParserFactory.newInstance().newSAXParser().getXMLReader();
xmlreader.setContentHandler(new ContentHandler() {
    ...
});

xmlreader.parse(new InputSource(myInputStream));

关于java - 将 InputStream 对象转换为 String 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25806441/

相关文章:

java - 使用霍纳算法评估多项式和计算步骤 (Java)

c++ - 从文件的单行读取输入字符

buffer - 读取 HttpURLConnection InputStream - 手动缓冲区还是 BufferedInputStream?

java - 如何循环字符串数组?类(class)?

java - 对齐所有面板组件ja​​va

java - 通过继承和类型参数化存储库访问 JPA 方法

java - 创建InputSource后可以立即关闭InputStream吗?

python - 正则表达式: Remove Time-Stamp from File-Name

python - 从 numpy 数组中的每个字符串中提取第一个字母

Java字符错误: cannot find symbol