android中的httpdown的工具类

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;
 }
 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
简单的网络下载文件程序。 WSADATA wdata; WSAStartup(MAKEWORD(2,2),&wdata); int sockfd; char buffer[1024]; struct sockaddr_in server_addr; struct hostent *host; int portnumber,nbytes; char host_addr[256]; char host_file[1024]; char local_file[256]; FILE * fp; char request[1024]; int isend, totalsend; int i; char * pt; memset(host_file,0,sizeof(host_file)); memcpy(host_file,"down/HB_EHSniffer36_ljh.rar",strlen("down/HB_EHSniffer36_ljh.rar")+1); if((host=gethostbyname("nmas.onlinedown.net"))==NULL)/*取得主机IP地址*/ { fprintf(stderr,"Gethostname error, %s\n", strerror(errno)); exit(1); } /* 客户程式开始建立 sockfd描述符 */ if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)/*建立SOCKET连接*/ { fprintf(stderr,"Socket Error:%s\a\n",strerror(errno)); exit(1); } /* 客户程式填充服务端的资料 */ memset(&server_addr,0,sizeof(server_addr)); server_addr.sin_family=AF_INET; server_addr.sin_port=htons(80); server_addr.sin_addr=*((struct in_addr *)host->h_addr); /* 客户程式发起连接请求 */ if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)/*连接网站*/ { fprintf(stderr,"Connect Error:%s\a\n",strerror(errno)); exit(1); } memset(request,0,1024); sprintf(request,"GET /%s HTTP/1.1\r\nAccept: */*\r\nCache-Control: no-cache\r\nConnection: close\r\nHost: %s\r\nPragma: no-cache\r\nReferer: http://www.onlinedown.net/soft/15450.htm\r\nRange: bytes=0-\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; )\r\n\r\n" ,host_file,"nmas.onlinedown.net"); printf("%s", request);/*准备request,将要发送给主机*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值