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

时间:2014-09-12 10:41:24

标签: java string inputstream

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

增加JVM内存不是一种选择,因为我收集信息的文件数量正在不断增加。那么有人可以建议我该怎么做来解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

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

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

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

xmlreader.parse(new InputSource(myInputStream));