我的安卓应用使用了一个API,它会发送一个多部分的HTTP请求。我成功地得到了如下响应:
post.setEntity(multipartEntity.build()); HttpResponse response = client.execute(post);
响应是一个电子书文件的内容(通常是epub或mobi)。我想把这个写到一个指定路径的文件中,比方说“/sdcard/test. epub”。文件可能高达20 MB,所以它需要使用某种流,但我不能只是不能把我的头周围。谢谢!
hjqgdpho1#
这是一个简单的任务,您需要WRITE_EXTERNAL_STORAGE使用权限..然后只需检索InputStream
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
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子句或捕获多个异常。这段代码是用于特定用途的,请根据自己的需要进行定制。
2条答案
按热度按时间hjqgdpho1#
这是一个简单的任务,您需要
WRITE_EXTERNAL_STORAGE
使用权限..然后只需检索InputStream
创建文件输出流
以及从IS读取和用FO写入
编辑,检查tyoo
7lrncoxx2#
首先是方法:
第二个是实际代码:
请确保相应地将“filePathToSave”更改为保存文件的位置,将“FileToDownlod”更改为下载位置。
“filePathToSave”是您想要保存文件的位置,如果您选择本地保存,那么您可以简单地指向桌面,但不要忘记为您的文件命名为“/Users/admin/Desktop/downloaded.pdf”(在Mac中)。
“文件到下载目录”采用URL格式,例如“https://www.doesntexist.com/sample.pdf“
不要惊慌,因为第二段代码将要求声明throws子句或捕获多个异常。这段代码是用于特定用途的,请根据自己的需要进行定制。