我有一个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/