Android 文件下载,在Android开发中很长用到,经常需要在应用程序中下载所需要的文件比如电子书,MP3格式的音乐文件,电影等。我在这里总结了一下,以后要用时可以直接拷贝,
代码分析:
有两个工具类,HttpDownloader.java类中定义两个下载方法,download(String urlstr)下载纯文本文件,downfile(String urlStr,String path,String fileName)下载字节文件类。FileUtils.java类定义了写入sd卡的操作。Download.java类为主线程类,两个按钮,监听下载事件。
注意:
在AndroidManifest.xml中添加网络访问权限
<uses-permission android:name="android.permission.INTERNET"/>
在AndroidManifest.xml中加入访问SDCard的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
代码:
main.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="Android_hello word"
- />
- <Button
- android:id="@+id/buttontxt"
- android:layout_width="300dp"
- android:layout_height="wrap_content"
- android:text="单击下载txt文件"
- />
- <Button
- android:id="@+id/buttonmp3"
- android:layout_width="300dp"
- android:layout_height="wrap_content"
- android:text="单击下载mp3文件"
- />
- </LinearLayout>
Download.java
- package com.example.download;
- import android.os.Bundle;
- import android.app.Activity;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class Download extends Activity {
- private Button buttontxt;
- private Button buttonmp3;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_download);
- buttontxt = (Button) findViewById(R.id.buttontxt);
- buttontxt.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- // TODO Auto-generated method stub
- // TODO Auto-generated method stub
- // 创建一个匿名线程用于下载文件
- new Thread() {
- public void run() {
- HttpDownloader httpDownloader = new HttpDownloader();
- // 调用httpDownloader对象的重载方法download下载txt文件
- String txt = httpDownloader
- .download("http://www.baidu.com/");
- System.out.println(txt);
- }
- }.start();
- }
- });
- buttonmp3 = (Button) findViewById(R.id.buttonmp3);
- // 为buttonmp3添加单击事件监听器
- buttonmp3.setOnClickListener(new OnClickListener() {
- /*
- * (non-Javadoc)
- *
- * @see android.view.View.OnClickListener#onClick(android.view.View)
- */
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- new Thread() {
- public void run() {
- try {
- HttpDownloader httpDownloader = new HttpDownloader();
- // 调用httpDownloader对象的重载方法download下载mp3文件
- int result = httpDownloader
- .downfile(
- "http://sjrjy.apkzz.net/201011/291354164ea84578066309.jpg",
- "Android/", "9.jpg");
- System.out.println(result);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }.start();
- }
- });
- }
- }
HttpDownloader.java
- package com.example.download;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.net.HttpURLConnection;
- import java.net.URL;