2

我面临着一种情况,我必须将 300 MB 的数据写入 XML。使用 Streams 我完美地执行了任务而没有遇到OutOfMemory异常。

现在我必须将FileOutputStream对象转换为实际数据并将其传递String给其他方法。

我已经尝试过,但没有得到预期的结果。请让我知道如何将FileOutputStream对象转换为字符串值

4

3 回答 3

3

如果您的String 太大并且您试图一次将其保存在内存中,它总是会导致您OutOfMemoryError与您使用的阅读器无关。

所以,问题不在于你的读者。问题是您的 String 对象(您要传递的对象)。

如果您需要将如此大的文件作为字符串变量存储/传递,那么您的架构肯定有问题。

您的错误是您试图将 XML 文本放入 Java String 变量中。您应该避免将大对象存储在内存中,这是这里的关键点。

通常文本是压缩比为 0.1 - 0.01 的对象。

尝试使用 ZipOutputStream/ZipInputStream(或一些类似的库)——它们可以很好地处理读取/写入文件的流。

在我的实践中,它可以完美地处理巨大的 XML 文件。

于 2013-04-02T16:16:02.850 回答
0

你是怎么写文件的?FileOutputStream 创建是可以的,但是当你使用 FileOutputStream 编写时,你必须向它传递一些东西。当您将数据传递给 时FileOutputStream.write(some_data),为什么不同时在 aStringBuffer中写入相同的内容?

于 2013-04-02T08:44:05.717 回答
0

您无法从FileOutputStream. 尝试FileReader从文件中读取数据。

您不能使用最初用于创建文件的数据吗?如果不是,您可以使用 XML Parser like SAXorJDOM来读取数据

于 2013-04-02T08:44:14.483 回答