【问题标题】:Need to convert a large file to string in Java需要在Java中将大文件转换为字符串
【发布时间】:2014-05-09 15:27:46
【问题描述】:

当我尝试将大于 50MB 的大文件转换为字符串(使用 StringBuilder)时,我遇到了 OOM 问题。

见过类似的问题,但没有一个答案有帮助。

最终目的是将文件数据附加到 xml 属性并将其传输到服务器。

在安卓设备上试用。

使用的代码来自这篇文章:How do I create a Java string from the contents of a file?

【问题讨论】:

  • 您是在实际设备上还是在模拟器上收到错误消息?
  • 使用工作代码示例会更容易回答您的问题。请将您的代码发布为 minimal example,以证明您的问题。
  • 我们可以看到您使用 StringBuilder 并尝试转换文件的代码吗?我们还能看到与将文件数据附加到 XML 相关的代码吗?我们可能有一种方法可以帮助您调整代码,从而避免出现内存不足问题
  • @PM77-1 实际安卓设备

标签: java android xml file


【解决方案1】:

创建一个list<string> 并在读取文件时保存每个例如列表中的 200 个字符作为新字符串。然后你可以用同样的方式把它写到你的 XML 中。

希望对你有帮助。

【讨论】:

    【解决方案2】:

    为避免一次将整个文件放在堆中,最好使用多部分消息将其发送到服务器。一部分将包含 XML,文件将在单独的部分中。这可以使用 web 服务来实现,但这取决于需求以及服务器实现可以更改多少。

    如果服务器是“固定的”并且无法更改以接受多部分消息,并且您必须坚持在一个 XML 中发送所有内容,那么您可能需要避免使用 DOM 来生成 XML。

    【讨论】:

    • 是的,服务器端实现无法更改,我们无法控制。
    【解决方案3】:

    尝试使用 IOUtils 的 Apache Commons IO 库:

    public static void main(String[] args) throws Exception {
        IOUtils.write("string", new FileOutputStream("file"));
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-19
      • 2015-09-04
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      • 2014-04-24
      相关资源
      最近更新 更多