Android网络文件下载模块整理_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > Android网络文件下载模块整理

Android网络文件下载模块整理

 2015/1/1 19:55:58  lucaschen  程序员俱乐部  我要评论(0)
  • 摘要:一、知识基础tomcat服务器配置理解http协议理解javaIO操作相关知识SDcard操作知识Android权限配置二、实现步骤1、从网上获取资源1publicStringdownload(StringurlStr){2StringBuffersb=newStringBuffer();3Stringline=null;4BufferedReaderbuffer=null;5try{6//创建一个URL对象7url=newURL(urlStr)
  • 标签:android 文件 下载 网络

一、知识基础

  tomcat服务器配置

  理解http协议

  理解javaIO操作相关知识

      SDcard操作知识

  Android 权限配置

二、实现步骤

  1、从网上获取资源

class="code_img_closed" src="/Upload/Images/2015010119/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('4d0c2e0c-cff5-4daf-8b32-35d880a4c014',event)" src="/Upload/Images/2015010119/2B1B950FA3DF188F.gif" alt="" />
 1 public String download(String urlStr) {
 2         StringBuffer sb = new StringBuffer();
 3         String line = null;
 4         BufferedReader buffer = null;
 5         try {
 6             // 创建一个URL对象
 7             url = new URL(urlStr);
 8             // 创建一个Http连接
 9             HttpURLConnection urlConn = (HttpURLConnection) url
10                     .openConnection();
11             // 使用IO流读取数据
12             buffer = new BufferedReader(new InputStreamReader(urlConn
13                     .getInputStream()));
14             while ((line = buffer.readLine()) != null) {
15                 sb.append(line);
16             }
17         } catch (Exception e) {
18             e.printStackTrace();
19         } finally {
20             try {
21                 buffer.close();
22             } catch (Exception e) {
23                 e.printStackTrace();
24             }
25         }
26         return sb.toString();
27     }
28 
29     /**
30      * 该函数返回整形 -1:代表下载文件出错 0:代表下载文件成功 1:代表文件已经存在
31      */
32     public int downFile(String urlStr, String path, String fileName) {
33         InputStream inputStream = null;
34         try {
35             FileUtils fileUtils = new FileUtils();
36             
37             if (fileUtils.isFileExist(path + fileName)) {
38                 return 1;
39             } else {
40                 inputStream = getInputStreamFromUrl(urlStr);
41                 File resultFile = fileUtils.write2SDFromInput(path,fileName, inputStream);
42                 if (resultFile == null) {
43                     return -1;
44                 }
45             }
46         } catch (Exception e) {
47             e.printStackTrace();
48             return -1;
49         } finally {
50             try {
51                 inputStream.close();
52             } catch (Exception e) {
53                 e.printStackTrace();
54             }
55         }
56         return 0;
57     }
58 
59     /**
60      * 根据URL得到输入流
61      * 
62      * @param urlStr
63      * @return
64      * @throws MalformedURLException
65      * @throws IOException
66      */
67     public InputStream getInputStreamFromUrl(String urlStr)
68             throws MalformedURLException, IOException {
69         url = new URL(urlStr);
70         HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
71         InputStream inputStream = urlConn.getInputStream();
72         return inputStream;
73     }
74 }
从网络下载文件

 

  2、将资源写入SDcard

public class FileUtils {
    private String SDPATH;

    public String getSDPATH() {
        return SDPATH;
    }
    public FileUtils() {
        //得到当前外部存储设备的目录
        // /SDCARD
        SDPATH = Environment.getExternalStorageDirectory() + "/";
    }
    /**
     * 在SD卡上创建文件
     * 
     * @throws IOException
     */
    public File creatSDFile(String fileName) throws IOException {
        File file = new File(SDPATH + fileName);
        file.createNewFile();
        return file;
    }
    
    /**
     * 在SD卡上创建目录
     * 
     * @param dirName
     */
    public File creatSDDir(String dirName) {
        File dir = new File(SDPATH + dirName);
        dir.mkdirs();
        return dir;
    }

    /**
     * 判断SD卡上的文件夹是否存在
     */
    public boolean isFileExist(String fileName){
        File file = new File(SDPATH + fileName);
        return file.exists();
    }
    
    /**
     * 将一个InputStream里面的数据写入到SD卡中
     */
    public File write2SDFromInput(String path,String fileName,InputStream input){
        File file = null;
        OutputStream output = null;
        try{
            creatSDDir(path);
            file = creatSDFile(path + fileName);
            output = new FileOutputStream(file);//写入数据
            byte buffer [] = new byte[4 * 1024];
            while((input.read(buffer)) != -1){
                output.write(buffer);
            }
            output.flush();
        }
        catch(Exception e){
            e.printStackTrace();
        }
        finally{
            try{
                output.close();
            }
            catch(Exception e){
                e.printStackTrace();
            }
        }
        return file;
    }

}
SDCard 读写操作

三、版本说明

  程序源码来源Mars老师,表示感谢

 

发表评论
用户名: 匿名