下载文件
来源:互联网 发布:淘宝店主的故事 编辑:程序博客网 时间:2024/05/29 17:10
1.下载工具类,将要下载的文件保存到SD卡中
package com.huo;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.os.Environment;
public class DownloadUtils {
private String SDPATH;
public String getSDPATH() {
return SDPATH;
}
/* 获取外部存储设备目录*/
public DownloadUtils() {
/*Environment.getExternalStorageState()方法用于获取SDCard的状态,
*如果手机装 有SDCard,并且可以进行读写,那么方法返回的状态等于Environment.MEDIA_MOUNTED*/
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
/*获取SD卡的存储路径*/
SDPATH = Environment.getExternalStorageDirectory() + "/";
}
}
/*在SD卡上创建文件*/
public File createSDFile(String filename) throws IOException{
File file = new File(SDPATH + filename);
file.createNewFile();
return file;
}
/*创建SD卡目录*/
public File createSDir(String dirname){
File dir = new File(SDPATH + dirname);
dir.mkdir();
return dir;
}
/*判断SD卡上文件是否存在*/
public boolean isFileExist(String filename){
File file = new File(SDPATH + filename);
return file.exists();
}
/*从输入流中读出数据写入到SD卡中,从输入流中读取数据,保存到字节数组中,然后将数据写入到输出流中
* @param dirname 存储路径
* @param filename 文件名
* @param is 输入流
* */
public File write2SDFromInput(String path,String filename,InputStream is){
File file = null;
OutputStream os = null;
try {
createSDir(path);
file = createSDFile(path + filename);
/*创建一个向指定 File 对象表示的文件中写入数据的文件输出流*/
os = new FileOutputStream(file);
byte[] buffer = new byte[4*1024];
while((is.read(buffer)) != -1){
os.write(buffer);
}
os.flush();
}
catch (Exception e) {
e.printStackTrace();
}
finally{
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return file;
}
}
===========================================
2.实现文件下载
package com.huo;
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;
public class Downloader {
private URL url = null;
public String downloadTXTFile(String httpUrl){
BufferedReader buffer = null;
StringBuffer sb = new StringBuffer();
String line = null;
/*获取URL对象*/
try {
url = new URL(httpUrl);
/*获取HttpURLConnection对象*/
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
/*创建BufferedReader,用来读取数据*/
buffer = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
while((line=buffer.readLine())!= null){
sb.append(line);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
buffer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return sb.toString();
}
/*
* 下载文件
* 0代表下载成功
* 1代表该文件以存在
* -1代表下载失败
* */
public int downloadFile(String urlStr,String path,String filename){
InputStream is = null;
try{
DownloadUtils downloadUtils = new DownloadUtils();
/*判断该文件是否存在*/
if(downloadUtils.isFileExist(path + filename)){
return 1;
}
else{
is = getInputStreamFromURL(urlStr);
File resultFile = downloadUtils.write2SDFromInput(path, filename, is);
if(resultFile == null){
return -1;
}
}
}catch(Exception e){
e.printStackTrace();
return -1;
}
// finally{
// try {
// is.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
return 0;
}
/*根据URL,取得输入流*/
public InputStream getInputStreamFromURL(String urlStr){
InputStream is = null;
try {
url = new URL(urlStr);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
is = httpConn.getInputStream();
} catch (Exception e) {
e.printStackTrace();
}
return is;
}
}
=============================================
3.Activity
package com.huo;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class DownloadActivity extends Activity {
Button button01;
Button button02;
Downloader downloader = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button01 = (Button) findViewById(R.id.Button01);
button01.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
downloader = new Downloader();
String str = downloader.downloadTXTFile("http://10.0.2.2:8080/oa/aaa.txt");
System.out.println(str);
}
});
button02 = (Button) findViewById(R.id.Button02);
button02.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
downloader = new Downloader();
int result = downloader.downloadFile("http://10.0.2.2:8080/oa/aaa.txt",
"voa/","aaa.txt");
System.out.println(result);
}
});
}
}
- 下载图片,下载文件
- 文件下载
- 文件下载
- 文件下载
- 文件下载
- 文件下载
- 文件下载
- 下载文件
- 文件下载
- 下载文件
- 文件下载
- 文件下载
- 下载文件
- 文件下载
- 下载文件
- 下载文件
- 文件下载
- 下载文件
- Dos命令大全
- 也算开始了博客生活
- 发送短信小程序
- Power Builder 入门分享
- Nested Loops Join(嵌套连接)
- 下载文件
- 我编写的C语言教材已由电子工业出版社出版
- 《软件随想录》总体感受
- Android下编译自己的库文件jar并在应用中调用
- Ext 2.0使用:对分页Ext.PagingToolbar的扩展
- 如何在AltiumDesigner中实现两片DDR等长走线
- Mercurial简明教程(在工作流程中学习Mercurial)
- 《喜欢昨天》
- 使用WTP套件构建Web开发环境