我面临着必须将 300 MB 数据写入 XML 的情况。使用 Streams,我完美地执行了任务,没有遇到 OutOfMemory
异常。
现在我必须将 FileOutputStream
对象转换为实际数据,并将其作为 String
传递给其他方法。
我已经尝试过,但没有得到预期的结果。请告诉我如何将FileOutputStream
对象转换为字符串值?
最佳答案
如果您的字符串太大并且您尝试一次将其保留在内存中,那么它总是会导致您OutOfMemoryError独立您使用的阅读器这一事实。
所以,问题不在于您的 Reader。问题在于您的 String 对象(您想要传递的对象)。
如果您需要将如此大的文件作为字符串变量存储/传递,那么您的架构肯定有问题。
您的错误是您试图将 XML 文本放入 Java 字符串变量中。您应该避免在内存中存储大对象,这是这里的关键点。
一般情况下,文本会被压缩,压缩比为0.1 - 0.01。
尝试使用 ZipOutputStream/ZipInputStream(或一些类似的库) - 它们可以很好地处理读取/写入文件的流。
在我的实践中,它可以完美地处理巨大的 XML 文件。
关于java - 如何从 FileOutputStream 对象中检索 String 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15759344/