zoukankan      html  css  js  c++  java
  • HttpDownloader2011年09月20日 写好用于下载的类 并且封装好

    以后用到的时候就可以把下面两个文件拷贝到项目的包里

    比如我要下载http://www.shenjoy.com/mp3/music.mp3 存放到sd卡的声音文件夹内 并且命名为shenjoymusic.mp3

    httpDownloader.download("http://www.shenjoy.com/mp3/music.mp3", "声音/", "shenjoymusic.mp3");

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    下面写出封装好的HttpDownloader类

    public class HttpDownloader {

    private URL url = null;

    public int download(String urlStr, String path, String fileName) {

    InputStream inputStream = null;

    try {

    FileUtils fileUtils = new FileUtils();   //另一个类 在下面

    if (fileUtils.isFileExist(path + fileName)) {

    return 1; //文件已经存在

    } else {

    inputStream =getInputStreamFromUrl(urlStr);

    File resultFile =fileUtils.write2SDFromInput(inputStream,path,fileName); 

    if (resultFile == null)

       return -1;  //下载文件出错

       else return 0; //下载文件成功

    }

    } catch (Exception e) {

    e.printStackTrace();

    return -1;

    } finally {

    try {

    inputStream.close();

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    }

    public InputStream getInputStreamFromUrl(String urlStr) throws MalformedURLException, IOException {

    InputStream inputStream=null;

    try{

    // 创建一个URL对象

       url = new URL(urlStr);

    // 创建一个Http连接

       HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();

    // 使用IO流读取数据

       inputStream = urlConn.getInputStream();

       return inputStream;

    }

    catch (Exception e) {

    e.printStackTrace();

    return null;

    }

    finally {

       inputStream.close();

    }

    }

    }

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    接下来是FileUtils类

    public class FileUtils {

    private String SDPATH;

    public String getSDPATH() {

    return SDPATH;

    }

    public FileUtils() {

    //得到当前外部存储设备的目录

    // /SDCARD

    SDPATH = Environment.getExternalStorageDirectory() + "/";

    }

    /**

    * 在SD卡上创建目录

    *

    * @param dirName

    */

    public File creatSDDir(String dirName) {

    File file = new File(SDPATH + dirName);

    file.mkdirs();

    return file;

    }

    /**

    * 在SD卡上创建文件

    *

    * @throws IOException

    */

    public File creatSDFile(String fileName) throws IOException {

    File file = new File(SDPATH + fileName);

    file.createNewFile();

    return file;

    }

    /**

    * 判断SD卡上的文件夹是否存在

    */

    public boolean isFileExist(String fileName){

    File file = new File(SDPATH + fileName);

    return file.exists();

    }

    /**

    * 将一个InputStream里面的数据写入到SD卡中

    */

    public File write2SDFromInput(InputStream inputStream,String path,String fileName){

    File file = null;

    OutputStream outputStream = null;

    try{

    creatSDDir(path);

    file = creatSDFile(path + fileName);

    outputStream = new FileOutputStream(file);

    byte buffer [] = new byte[4 * 1024];

    while((inputStream.read(buffer)) != -1){

    outputStream.write(buffer);

    }

    outputStream.flush();

    }

    catch(Exception e){

    e.printStackTrace();

    }

    finally{

    try{

    outputStream.close();

    }

    catch(Exception e){

    e.printStackTrace();

    }

    }

    return file;

    }

    }

  • 相关阅读:
    前端脚手架的那些事儿
    CSS重置默认样式reset.css代码模板
    Web 3.0 前瞻:基于区块链的下一代浏览器
    关键词定位是网站推广的基础
    6年架构师针对web前端小白,作出的职业规划建议
    和程序员约会的优点和缺点
    如何在软件开发中避免出现漏洞
    Linux下修改时区
    前端需要掌握的Nginx知识
    Nginx入门指南
  • 原文地址:https://www.cnblogs.com/lzhitian/p/2424012.html
Copyright © 2011-2022 走看看