android中的httpdown的工具类

来源:互联网 发布:淘宝主图白底图要求 编辑:程序博客网 时间:2024/06/15 06:32

package com.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;


/**
 * 封装了一些下载文件的类,可以在Activity文件中直接调用
 * @author zl 
 */
public class HttpDownLoad {

 private URL url = null;
 
 /**
  * 根据URL得到一个输入流
  * @param urlStr
  * @return
  * @throws MalformedURLException
  * @throws IOException
  */
 public InputStream getInputStreamFromUrl (String urlStr) throws MalformedURLException,IOException{
  url = new URL(urlStr);
  HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
  InputStream inputStream = urlConn.getInputStream();
  return inputStream;
 }
 
 /**
  * 根据URL下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文件中的内容
  * 1.创建一个URL对象
  * 2.通过URL对象,创建一个HttpURLConnection对象
  * 3.得到InputStream
  * 4.从InputStream中读取数据
  */

 public String downloadText(String urlStr){
  StringBuffer sb = new StringBuffer();
  String line = null;
  BufferedReader buffer = null;
  
  try {
   //创建一个URL对象
   url = new URL(urlStr);
   //创建一个HTTP连接
   HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
   //使用IO流读取数据
   buffer = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
   //使用循环将读取的一行一行的数据存入到StringBuffer对象中
   while((line = buffer.readLine()) != null){
    sb.append(line);
   }
  } catch (Exception e) {
   // TODO: handle exception
   e.printStackTrace();
  }finally{
   try {
    buffer.close();
    
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
  return sb.toString();
 }
 
 /**
  * 根据URL下载文件,这个文件可以是其他文件,返回这个文件下载是否成功
  * @param urlStr --地址
  * @param path --存储路径
  * @param fileName --存储文件名
  * @param againDown --布尔值判断否在文件已存在时下载
  * @return
  * 返回值:-1-->下载失败,0-->下载成功,1-->文件存在
  */
 public int downFile(String urlStr,String path,String fileName,Boolean againDown){
  //生成一个InputStream对象
  InputStream inputStream = null;
  //创建FileUtils对象,用于判断要下载的文件是否存在
  FileUtils fileUtils = new FileUtils();
  boolean isFileUtils = fileUtils.isFileExist(path+fileName);
  try {
   //文件存在且不重新下载时,返回1
   if(isFileUtils && againDown == false){
    return 1;
   }
   //文件存在且要重新下载时或文件不存在时下载
   else if((isFileUtils && againDown == true) || isFileUtils == false){
    //根据URL输入流下载
    inputStream = getInputStreamFromUrl(urlStr);
    //调用存入SD卡的方法,并返回存入结果
    File resultFile = fileUtils.write2SDFromInput(path, fileName, inputStream);
    //存入为空时,返回-1
    if(resultFile == null){
     return -1;
    }
   }
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   //出现异常时,返回-1
   return -1;
  } finally{
   try {
    inputStream.close();
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
  //都正常时,返回0
  return 0;
 }
 
}

原创粉丝点击