Chinaunix首页 | 论坛 | 博客
  • 博客访问: 207976
  • 博文数量: 102
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1015
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-05 16:45
文章存档

2014年(73)

2013年(29)

我的朋友

分类: Android平台

2014-04-06 16:54:16

Mp3Play(8) HttpDownloader、URL文件下载  、SAXParserFactory

点击(此处)折叠或打开

  1. //HttpDownloader.java
  2. package com.lwb.download;

  3. import java.io.BufferedReader;
  4. import java.io.File;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.io.InputStreamReader;
  8. import java.net.HttpURLConnection;
  9. import java.net.MalformedURLException;
  10. import java.net.URL;

  11. import com.lwb.utils.FileUtils;



  12. public class HttpDownloader {
  13.     private URL url = null;
  14.     
  15.     /*String download(String urlStr)
  16.      * 根据URL:urlStr下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文件中内容
  17.      * 1、创建一个url url = new URL(urlStr);
  18.      * 2、通过url对象,创建一个httpURLConnection对象 urlConn = (HttpURLConnection) url.openConnection();
  19.      * 3、得到输入流的缓冲区:buffer = new BufferedReader( new InputSteamReader(urlConn.getInputStream()));
  20.      * 其中:urlConn.getInputStream表得到链接相应文本的输入流
  21.      * InputStreamReader(urlConn.getInputStream())输入流装入读输入流
  22.      * new BufferedReader(new InputStreamReader(urlConn.getInputStream()))读输入流装进 读缓冲区
  23.      * 4、从读缓冲区中读取数据 line = buffer.readLine() 一次读取文本缓冲区中的一行 并添加到字符串缓冲区sb.append(line)中
  24.      * 5、把字符串缓冲区的内存转换为字符串进行返回sb.toString();
  25.      * @param urlStr
  26.      * @return
  27.      * */
  28.     
  29.     public String download(String urlStr){
  30.         StringBuffer sb =new StringBuffer(); //表字符串缓冲区
  31.         String line = null;
  32.         BufferedReader buffer = null; //IO流中经常使用的对象 表读取缓冲区对象
  33.         
  34.         try{
  35.             //1、创建一个URL对象
  36.             url = new URL(urlStr);
  37.             //URL(Uniform Resource Locator:统一资源定位器)是WWW也的地址            
  38.             //2、创建一个Http链接
  39.             HttpURLConnection urlConn=(HttpURLConnection) url.openConnection();            
  40.             //3、使用IO流读取数据到InputStream
  41.             buffer = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
  42.             //上面采用了装饰者设计模式:getInputSteam()字节流-》InputStreamReader()字符流-》
  43.             //Bufferedreader读取一行数据            
  44.             //4、从InputStream当中读取数据
  45.             while((line = buffer.readLine())!= null){
  46.                 sb.append(line);
  47.             }
  48.         }catch(Exception e){
  49.             System.out.println("download()************");
  50.             e.printStackTrace();
  51.         }finally{
  52.             try{
  53.                 buffer.close();
  54.             }catch(Exception e){
  55.                 e.printStackTrace();
  56.             }
  57.         }
  58.         return sb.toString();
  59.     }
  60.     
  61.     /*downFile(String urlStr,String path,String fileName)
  62.      * 该方法直接把在urlStr中的文件fileName下载SD卡中的path目录下
  63.      * 该函数返回整形 -1:代表下载文件出错 0:代表下载文件成功 1:代表文件已经存在
  64.      * 1、创建一个FileUtils对象new FileUtils(),这个是自定义类,用以操作读写SDCARD
  65.      * 2、判断文件是否已经存在fileUtils.isFileExist(path+fileName)
  66.      * 3、从urlStr文件中得到输入流:getInputStreamFromUrl(urlStr)
  67.      * 4、把输入流写入SD卡中 fileUtils.write2SDFromInput(path, fileName, inputStream);
  68.      */
  69.     public int downFile(String urlStr,String path,String fileName){
  70.         StringBuffer sb = new StringBuffer();
  71.         InputStream inputStream = null;        
  72.         try{
  73.             //创建一个FileUtils类型的对象
  74.             FileUtils fileUtils = new FileUtils();        
  75.             //判断文件是否已经存在
  76.             if(fileUtils.isFileExist(path+fileName)){
  77.                 return 1;//表文件已存在
  78.             }
  79.             else{
  80.                 inputStream = getInputStreamFromUrl(urlStr);//调用下面的函数                
  81.                 File resultFile = fileUtils.write2SDFromInput(path, fileName, inputStream);
  82.                 if(resultFile==null){
  83.                     return -1 ;//写入失败
  84.                 }
  85.             }
  86.         }
  87.         catch(Exception e){
  88.             e.printStackTrace();
  89.             return -1;
  90.         }
  91.         finally{
  92.             try{
  93.                 inputStream.close();                    
  94.             }catch(Exception e){
  95.                 e.printStackTrace();
  96.             }
  97.         }
  98.         return 0;
  99.     }
  100.         
  101.     /*InputStream getInputStreamFromUrl(String urlStr)
  102.      * 根据URL从服务器中得到输入流
  103.      * 1、创建URL对象: url = new URL(urlStr);
  104.      * 2、创建Http链接(说白了就是打开url):直接把url关联:urlConn = (HttpURLConnection) url.openConnection();
  105.      * 3、获取从关联到url的HTTP中得到输入流inputSteam = urlConn.getInputStream();
  106.      * @param urlStr
  107.      * @return
  108.      * @throws MalformedURLException
  109.      * @throws IOException
  110.      */
  111.     public InputStream getInputStreamFromUrl(String urlStr)//返回输入流
  112.     throws MalformedURLException,IOException{
  113.         //1、创建一个URL对象
  114.         url = new URL(urlStr);
  115.         //2、创建一个Http链接
  116.         HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
  117.         //3.1使用IO流读取数据 得到InputStram
  118.         InputStream inputSteam = urlConn.getInputStream();
  119.         return inputSteam;
  120.     }    
  121. }

阅读(467) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~