android 实现文件下载

来源:互联网 发布:怎么提高淘宝销售量 编辑:程序博客网 时间:2024/04/28 08:37

1.创建文件工具类(FileUtil.java)

package com.zengke.fileutil;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import android.os.Environment;

/**
 * 文件助手类
 * @author zengke
 *
 */
public class FileUtil {
 static String SDpath=null;
    
 /**
  * 得到SD卡的目录(从手机环境中得到可拓展存储目录)
  */
    public  FileUtil(){
     SDpath=Environment.getExternalStorageDirectory()+"/";
    }
    /**
     * 在SD卡上创建文件
     * @param filename
     * @return
     * @throws Exception
     */
    public static File createSDFile(String filename)throws Exception{
     File file=new File(SDpath+filename);
     file.createNewFile();
     return file;
    }
    /**
     * 在SD卡上创建目录
     * @param filename
     * @return
     * @throws Exception
     */
    public static File creatSDDir(String filename)throws Exception{
     File file=new File(SDpath+filename);
     file.mkdir();
     return file;
    }
    /**
     * 判读文件是否存在
     * @param filename
     * @return
     * @throws Exception
     */
    public static boolean isExsit(String filename){
     File file=new File(SDpath+filename);
     return file.exists();
    }
    
    /**
     * 将文件写入到SD卡
     * @param path  保存文件的路径
     * @param filename 文件名
     * @param inputStream 文件流
     * @return
     * @throws Exception
     */
    public static File write2SDFromInputStream(String path,String filename,InputStream inputStream) throws Exception{
     File file=null;
     OutputStream os=null;
     creatSDDir(path); //创建目录
     file=createSDFile(filename);//创建文件
     os=new FileOutputStream(file);//将文件流化
     byte[] bytes=new byte[4*1024];
     while(inputStream.read(bytes)!=-1){
      os.write(bytes); //将内容写入文件
     }
     os.flush();
     os.close();
     os=null;
     return file;
    }
}
2.文件下载类(FileDownloadUtil.java)

package com.zengke.fileutil;

import java.io.BufferedReader;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
/**
 * 文件下载帮助类
 * @author zengke
 *
 */
public class FileDownLoadUtil {
   URL url=null;
   /**
    * 得到文件流
    * @param filename 文件名
    * @return
    * @throws Exception
    */
   public InputStream getInputStream(String filename)throws Exception{
    url=new URL(filename);
    HttpURLConnection con=(HttpURLConnection)url.openConnection();
    InputStream  is=con.getInputStream();
    return is; 
   }
   
   /**
    * 模拟下载文本文件(只是获得内容,没有写入到磁盘)
    * @param filename
    * @return
    * @throws Exception
    */
   public String download(String filename)throws Exception{
    StringBuffer sb=new StringBuffer();
    InputStream is=getInputStream(filename);
    BufferedReader br=new BufferedReader(new InputStreamReader(is));
    String temp="";
    while((temp=br.readLine())!=null){
     sb.append(temp);
    }
    br.close();
    is.close();
    is=null;
    br=null;
    return sb.toString();
   }
   
   /**
    * 下载非文本文件
    * @param urlStr  网络文件路径
    * @param savePath 保存的位置
    * @param filename 文件名
    * @return  1.代表文件已存在  0.代表下载正常* @throws Exception
    */
   public int downloadfile(String urlStr,String savePath,String filename)throws Exception{
    InputStream is=null;
    if(FileUtil.isExsit(savePath+filename)){
     return 1;
    }
    is=getInputStream(urlStr);
    File file= FileUtil.write2SDFromInputStream(savePath, filename, is);
    if(null==file){
     return -1;
    }
    return 0;
   }
}

原创粉丝点击