2013-10-31 138 views
1

如何以流方式将实体保存到SDCard(为了避免内存问题)。将BufferedHttpEntity保存到文件

我无法找到关于此事的任何可靠的文件。

 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。我已经确认工作。

回答

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(); 

希望它能帮助。 干杯。

+0

谢谢,这是行不通的。所以接受。但是,当更改代码时,我意识到我正在使用的URL中存在一个错误。 (这阻止了你的方法也工作)。我会回去尝试我的旧代码。但是要么应该工作。编辑:测试,我的代码确实工作。 – Doomsknight

+0

您的方法更好,因为它真正流式传输,以避免内存溢出。 – Doomsknight