功能是实现下载文件,图片或MP3等,为了简单起见使用单线程,此代码为MarsAndroid教程的复制品,放在此处,留着参考。

首先是一个得到字节流随后保存到内存卡上的工具类:

package com.example.utils;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 FileUtils {    private String SDpath;    public String getSDpath(){        return SDpath;    }    public FileUtils(){        //得到当前外部存储设备的目录,即/SDCARD,后边加"/"为了之后方便        SDpath=Environment.getExternalStorageDirectory()+"/";    }    /**     * 在SD卡上创建文件     * @param fileName     * @return File     * @throws IOException     */    public File creatSDFile(String fileName) throws IOException{        File file=new File(SDpath+fileName);        file.createNewFile();        return file;    }    /**     * 在SDCARD创建目录     * @param dirName     * @return     */    public File creatSDDir(String dirName){        File dir=new File(SDpath+dirName);        dir.mkdir();        return dir;    }    public boolean isFileExist(String fileName){        File file=new File(fileName);        return file.exists();    }    /**     * 将一个InputStream里的数据写入SD卡     */    public File write2SDFromInput(String path,String fileName,InputStream is){        File file=null;        OutputStream os=null;        try{            creatSDDir(path);            file=creatSDFile(path+fileName);            os=new FileOutputStream(file);            byte buffer[]=new byte[4*1024];//4kb            while((is.read(buffer))!=-1){                os.write(buffer);            }            os.flush();            System.out.println("write to "+path+"sucess!");        }catch(Exception e){            e.printStackTrace();        }finally{            try{                os.close();            }catch(Exception e){                e.printStackTrace();            }                    }        return file;    }            }

随后是文件下载类:

package com.example.utils;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.MalformedURLException;import java.net.URL;public class HttpDownloader {    private URL url=null;    //此方法返回文本,但并未保存到SD卡    public String downloadText(String urlstr){        StringBuffer sb=new StringBuffer();        String line=null;        BufferedReader br=null;        try{            url=new URL(urlstr);            HttpURLConnection con= (HttpURLConnection)url.openConnection();            br=new BufferedReader(new InputStreamReader(con.getInputStream()));            while((line=br.readLine())!=null){                sb.append(line);            }        }catch(Exception e){            e.printStackTrace();        }finally{            try {                br.close();            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }        return sb.toString();    }    /**     *      * @param urlstr     * @param path     * @param fileName     * @return -1-error,0-success,1-file exist     */    public int downloadMP3(String urlstr,String path,String fileName){        InputStream is=null;        try{            FileUtils fileUtils=new FileUtils();            if(fileUtils.isFileExist(path+fileName)){                return 1;            }else{                is=getInputStreamFromUrl(urlstr);                File resultfile=fileUtils.write2SDFromInput(path, fileName, is);                if(resultfile==null){                    return -1;                }            }        }catch(Exception e){            e.printStackTrace();            return -1;        }finally{            try {                is.close();            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }        return 0;    }    private InputStream getInputStreamFromUrl(String urlstr)             throws MalformedURLException,IOException{        URL url=new URL(urlstr);        HttpURLConnection con=(HttpURLConnection)url.openConnection();        InputStream is=con.getInputStream();        return is;    }}

更多相关文章

  1. android提示:应用程序xx(进程:xxx.xxx.xxx)意外停止,请重试
  2. android源码编译报错:prebuilts/misc/linux-x86/bison/bison: 没
  3. JNI开发(一)之framework层增加自定义JNI层
  4. 在Android应用中读取彩信文件
  5. android如何给apk重新签名
  6. Android(安卓)7.0 FileProvider 的那些坑
  7. Android(安卓)APK系列3-------使用platform密钥来给apk文件签名
  8. Android之简单文件管理器
  9. 谷歌开发工具Android(安卓)Studio安装使用图文教程

随机推荐

  1. Android之存储
  2. android switch语句case expressions mus
  3. 【转】Android获取用于操作数据库的SQLit
  4. android自动化测试框架
  5. android 异常leaked intentreceiver
  6. 时间控件
  7. Android 闪关灯代码
  8. Android本地验证码的生成
  9. checkbox切换选中状态的图片
  10. 3 分钟搞定 Android(安卓)Push