本代码是通过http协议实现文件下载,记得在配置文件中加入对SD卡的读写权限和联网权限
先来Activity代码
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class AndroidTestActivity extends Activity {
/** Called when the activity is first created. */
private Button down;
private HttpDown http;
private String msg;
//下载进度条
private ProgressDialog mSaveDialog = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
down = (Button) findViewById(R.id.down);
down.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
mSaveDialog = ProgressDialog.show(AndroidTestActivity.this, "下载文件", "文件正在保存中,请稍等...", true);
//开启一个新的线程执行下载任务
new Thread(
new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
http = new HttpDown();
//获得SD卡路径
String sdpath = Environment.getExternalStorageDirectory()+"/DRMP/";
String str = "http://music.baidu.com/data/music/file?link=http://zhangmenshiting.baidu.com/data2/music/106150597/10090002354000128.mp3?xcode=56ea6c3d5f9b569dfbe9ff93fd6d8248075fef7b4684889d&song_id=100900023";
msg = http.download(str, sdpath, "1234.mp3");
messageHandler.sendMessage(messageHandler.obtainMessage());
}
}
).start();
}
});
}
private Handler messageHandler = new Handler(){
public void handleMessage(Message me){
mSaveDialog.dismiss();
Toast.makeText(AndroidTestActivity.this, msg, Toast.LENGTH_SHORT).show();
}
};
}
file工具类
*
*/
package com.wu;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* @author wu
*
*/
public class HttpDown {
/**
*
* @param strurl 文件url地址
* @param path 需要保存文件的路径
* @param fileName 保存到本地的文件名
* @return
*/
public String download(String strurl,String path,String fileName){
InputStream is = null;
OutputStream os = null;
URL url = null;
try {
//创建文件夹
File f = new File(path);
if(!f.exists()){
f.mkdir();
}
//创建文件
File file = new File(path+fileName);
//判断是否存在文件
if(file.exists()){
//创建新文件
file.createNewFile();
}else{
file.delete();
file.createNewFile();
}
//创建并打开连接
url = new URL(strurl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//文件输入流
is = conn.getInputStream();
//输出流
os = new FileOutputStream(file);
byte buffer[] = new byte[1024];
int len =0 ;
while( (len = is.read(buffer))!= -1){
os.write(buffer,0,len);
}
os.flush();
return "success";
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "failure";
}finally{
try{
os.close();
is.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}
}