java - 如何从 FileOutputStream 对象中检索 String 值?

标签 java android

我面临着必须将 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/

相关文章:

java - e4 中一个元素上的多个 css 类

java - 出现无法解决的错误

android - 我的程序不适用于任何安卓设备

c# - 无法通过TCP将数据android发送到pc

java - Java中的数组继承

java - 如何使用 javassist 编译源代码?

Java Gson 不兼容的类型

android - fragment backstack 替换问题

java - 流 'map'可以用于这样的处理吗?

java - 有适用于 Android 的键盘小部件吗?