android 下载文件
时间: 2023-08-21 17:06:59 浏览: 88
在 Android 中下载文件可以使用以下步骤:
1. 添加网络权限:在 AndroidManifest.xml 文件中添加以下权限:
```xml
<uses-permission android:name="android.permission.INTERNET" />
```
2. 创建一个异步任务(AsyncTask)或者使用线程(Thread)来执行下载操作。以下是使用异步任务的示例:
```java
public class DownloadTask extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... urls) {
String fileUrl = urls[0];
String fileName = urls[1];
try {
URL url = new URL(fileUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.connect();
int fileLength = connection.getContentLength();
InputStream inputStream = connection.getInputStream();
FileOutputStream outputStream = new FileOutputStream(Environment.getExternalStorageDirectory() + "/" + fileName);
byte[] buffer = new byte[1024];
int bytesRead;
long totalBytesRead = 0;
while ((bytesRead = inputStream.read(buffer)) != -1) {
totalBytesRead += bytesRead;
outputStream.write(buffer, 0, bytesRead);
// 发布进度更新
publishProgress((int) (totalBytesRead * 100 / fileLength));
}
outputStream.close();
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
return fileName;
}
@Override
protected void onProgressUpdate(Integer... progress) {
// 进度更新
int percentage = progress[0];
// 可以在这里更新UI组件,例如进度条
}
@Override
protected void onPostExecute(String fileName) {
// 下载完成
// 可以在这里执行一些完成后的操作,例如显示通知或者打开文件
}
}
```
3. 在需要下载文件的地方,创建一个 DownloadTask 对象并执行它:
```java
String fileUrl = "http://example.com/file.pdf";
String fileName = "file.pdf";
DownloadTask downloadTask = new DownloadTask();
downloadTask.execute(fileUrl, fileName);
```
以上代码会将文件从指定的 URL 下载到设备的存储目录中。你可以根据需要修改文件的保存路径和名称。
阅读全文