【问题标题】:Saving BufferedHttpEntity to File将 BufferedHttpEntity 保存到文件
【发布时间】:2013-11-11 08:55:17
【问题描述】:

如何以流的方式将实体保存到 SDCard(以避免内存问题)。

我找不到任何关于此事的可靠文档。

        response = httpClient.execute(request);

        BufferedHttpEntity responseEntity = new BufferedHttpEntity(response.getEntity());

        FileOutputStream fos = new FileOutputStream(Files.SDCARD + savePath);

        responseEntity.writeTo(fos);

        fos.flush();
        fos.close();

这给了我文件,但没有内容。 (大小为 2KB)。所以它写得不好。

服务器正在发送FileStream。我已经确认可以工作。

【问题讨论】:

    标签: android httpresponse httpentity


    【解决方案1】:

    我会尝试这种方法:

    HttpResponse response = httpClient.execute(post);    
    
    InputStream input = response.getEntity().getContent();
    OutputStream output = new FileOutputStream("path/to/file");
    int read = 0;
    
    byte[] bytes = new byte[1024];
    while ((read = input.read(bytes)) != -1) {
        output.write(bytes, 0, read);
    }
    output.close();
    

    希望对您有所帮助。 干杯。

    【讨论】:

    • 谢谢,这确实有效。所以接受。但是,在更改代码时,我意识到我使用的 URL 中有一个错误。 (这也阻止了你的方法工作)。我也会回去尝试我的旧代码。但任何一个都应该工作。编辑:经过测试,我的代码确实有效。
    • 你的方法更好,因为它真正流式传输,以避免内存溢出。
    猜你喜欢
    • 2012-09-27
    • 2010-10-16
    • 2016-06-11
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多