我面临着一种情况,我必须将 300 MB 的数据写入 XML。使用 Streams 我完美地执行了任务而没有遇到OutOfMemory
异常。
现在我必须将FileOutputStream
对象转换为实际数据并将其传递String
给其他方法。
我已经尝试过,但没有得到预期的结果。请让我知道如何将FileOutputStream
对象转换为字符串值?
如果您的String 太大并且您试图一次将其保存在内存中,它总是会导致您OutOfMemoryError与您使用的阅读器无关。
所以,问题不在于你的读者。问题是您的 String 对象(您要传递的对象)。
如果您需要将如此大的文件作为字符串变量存储/传递,那么您的架构肯定有问题。
您的错误是您试图将 XML 文本放入 Java String 变量中。您应该避免将大对象存储在内存中,这是这里的关键点。
通常文本是压缩比为 0.1 - 0.01 的对象。
尝试使用 ZipOutputStream/ZipInputStream(或一些类似的库)——它们可以很好地处理读取/写入文件的流。
在我的实践中,它可以完美地处理巨大的 XML 文件。
你是怎么写文件的?FileOutputStream 创建是可以的,但是当你使用 FileOutputStream 编写时,你必须向它传递一些东西。当您将数据传递给 时FileOutputStream.write(some_data)
,为什么不同时在 aStringBuffer
中写入相同的内容?
您无法从FileOutputStream
. 尝试FileReader
从文件中读取数据。
您不能使用最初用于创建文件的数据吗?如果不是,您可以使用 XML Parser like SAX
orJDOM
来读取数据