java 如何将HttpResponse下载到文件中?

p1tboqfb  于 2022-12-21  发布在  Java
关注(0)|答案(2)|浏览(192)

我的安卓应用使用了一个API,它会发送一个多部分的HTTP请求。我成功地得到了如下响应:

post.setEntity(multipartEntity.build());
HttpResponse response = client.execute(post);

响应是一个电子书文件的内容(通常是epub或mobi)。我想把这个写到一个指定路径的文件中,比方说“/sdcard/test. epub”。
文件可能高达20 MB,所以它需要使用某种流,但我不能只是不能把我的头周围。谢谢!

hjqgdpho

hjqgdpho1#

这是一个简单的任务,您需要WRITE_EXTERNAL_STORAGE使用权限..然后只需检索InputStream

InputStream is = response.getEntity().getContent();

创建文件输出流

FileOutputStream fos = new FileOutputStream(new File(Environment.getExternalStorageDirectory(), "test.epub"))

以及从IS读取和用FO写入

int read = 0;
byte[] buffer = new byte[32768];
while( (read = is.read(buffer)) > 0) {
  fos.write(buffer, 0, read);
}

fos.close();
is.close();

编辑,检查tyoo

7lrncoxx

7lrncoxx2#

首先是方法:

public HttpResponse setHTTPConnection() throws IOException, NullPointerException, URISyntaxException {
       HttpClient client = HttpClientBuilder.create().build();
       HttpRequestBase requestMethod = new HttpGet();
       requestMethod.setURI(new URI("***FileToDownlod***"));
       BasicHttpContext localContext = new BasicHttpContext();

       return client.execute(requestMethod, localContext);
   }

第二个是实际代码:

File downloadedFile = new File("filePathToSave");
       HttpResponse fileToDownload = setHTTPConnection();
       try {
           FileUtils.copyInputStreamToFile(fileToDownload.getEntity().getContent(), downloadedFile);
       } finally {
           fileToDownload.getEntity().getContent().close();
       }

请确保相应地将“filePathToSave”更改为保存文件的位置,将“FileToDownlod”更改为下载位置。
filePathToSave”是您想要保存文件的位置,如果您选择本地保存,那么您可以简单地指向桌面,但不要忘记为您的文件命名为“/Users/admin/Desktop/downloaded.pdf”(在Mac中)。
文件到下载目录”采用URL格式,例如“https://www.doesntexist.com/sample.pdf
不要惊慌,因为第二段代码将要求声明throws子句或捕获多个异常。这段代码是用于特定用途的,请根据自己的需要进行定制。

相关问题