Java 利用Http请求获取下载文件

  最近在使用CloseableHttpResponse来接受返回数据,但是因为涉及到文件下载,每次想直接用文件流做操作的时候,因为response被close掉,导致文件流接收失败。解决的方案就是,不关闭response,等到最后最后对流的操作结束再关闭;或者利用缓存区进行文件流的操作。

以下是根据缓存区进行操作的例子:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
bufferedReader =  new BufferedInputStream(response.getEntity().getContent());
byte[] buffer = new byte[1024];
int len;// 每次读取到的字节长度
while ((len = bufferedReader.read(buffer)) != -1) {
    baos.write(buffer, 0, len);
}
bufferedReader.close();
zipInputStream = new ZipInputStream(new ByteArrayInputStream(baos.toByteArray()));

或者:

HttpEntity entity = response.getEntity();
zipInputStream = new ZipInputStream(new ByteArrayInputStream(EntityUtils.toByteArray(entity)));

发表评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.