访问URL地址实现下载文件

来源:互联网 发布:ubuntu 14.04上安装qq 编辑:程序博客网 时间:2024/06/04 00:26
package Url;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import org.junit.Test;

/**
 * URL
 * 类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。
 * 抓取文件:以下载一张图片为例
 * 1、创建URL对象  指定文件的URL地址(图片的URL地址)
 * 2、获取远程连接的对象
 * 3、设置获取方式,一般用到GET、POST方式
 * 4、获取HTTP响应的状态码  200表示请求成功
 * 5、字节输入流  读取文件
 * 6、字节输出流  把读取的文件存入本地
 * @author hw
 *
 */
public class Url1 {
    
    @Test
    public void dodo() throws IOException{
        //创建URL对象  指向指定的url  域名
        URL url=new URL("http://img04.tooopen.com/images/20131202/sy_49706261893.jpg");
        //返回URL所引用远程对象的连接
        HttpURLConnection conn=(HttpURLConnection)url.openConnection();
        //设置URL请求方式  GET方式
        conn.setRequestMethod("GET");
        //从HTTP响应消息获取状态码
        int code=conn.getResponseCode();
        //如果状态码为200表示请求成功
        if(code==200){
            //获取输入流
            InputStream in=conn.getInputStream();
            BufferedInputStream bis=new BufferedInputStream(in);
            //获取输出流 将读取的数据写入指定的路径下的文件里
            BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("/home/huangwei/aaa/download.jpg",true));
            //新建byte数组 长度设置位1024
            byte[] by=new byte[1024];
            int len=0;
            //while循环  这里的len表示数组by的有效长度 同时也可以判断数据是否读取完毕
            while((len=bis.read(by))!=-1){
                bos.write(by,0,len);
                //刷新
                bos.flush();
            }
            //关闭资源
            bos.close();
            bis.close();
            
        }
        
    }
    

}