java+根据多个url批量下载文件 - Xproer-松鼠

时间:2024-03-11 21:55:00

java+根据多个url批量下载文件

1.基本流程
当我们想要下载网站上的某个资源时,我们会获取一个url,它是服务器定位资源的一个描述,下载的过程有如下几步:
(1)客户端发起一个url请求,获取连接对象。
(2)服务器解析url,并且将指定的资源返回一个输入流给客户。
(3)建立存储的目录以及保存的文件名。
(4)输出了写数据。
(5)关闭输入流和输出流。
2.实现代码的方法
/**

     * 从网络Url中下载文件

     * @param urlStr

     * @param fileName

     * @param savePath

     * @throws IOException

     */

    public static void  downLoadFromUrl(String urlStr,String fileName,String savePath) throws IOException{

        URL url = new URL(urlStr); 

        HttpURLConnection conn = (HttpURLConnection)url.openConnection(); 

                //设置超时间为3秒

        conn.setConnectTimeout(3*1000);

        //防止屏蔽程序抓取而返回403错误

        conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");

 

        //得到输入流

        InputStream inputStream = conn.getInputStream(); 

        //获取自己数组

        byte[] getData = readInputStream(inputStream);   

 

        //文件保存位置

        File saveDir = new File(savePath);

        if(!saveDir.exists()){

            saveDir.mkdir();

        }

        File file = new File(saveDir+File.separator+fileName);   

        FileOutputStream fos = new FileOutputStream(file);    

        fos.write(getData);

        if(fos!=null){

            fos.close(); 

        }

        if(inputStream!=null){

            inputStream.close();

        }

 

 

        System.out.println("info:"+url+" download success");

 

    }

 

 

 

    /**

     * 从输入流中获取字节数组

     * @param inputStream

     * @return

     * @throws IOException

     */

    public static byte[] readInputStream(InputStream inputStream) throws IOException { 

        byte[] buffer = new byte[1024]; 

        int len = 0; 

        ByteArrayOutputStream bos = new ByteArrayOutputStream(); 

        while((len = inputStream.read(buffer)) != -1) { 

            bos.write(buffer, 0, len); 

        } 

        bos.close(); 

        return bos.toByteArray(); 

    } 

 

    public static void main(String[] args) {

        try{

            downLoadFromUrl("http://101.95.48.97:8005/res/upload/interface/apptutorials/manualstypeico/6f83ce8f-0da5-49b3-bac8-fd5fc67d2725.png",

                    "百度.jpg","d:/resource/images/diaodiao/country/");

        }catch (Exception e) {

            // TODO: handle exception

        }

    }

 

效果展现:


详细配置可参考我写的这篇文章:

http://blog.ncmem.com/wordpress/2019/08/28/java%e6%89%b9%e9%87%8f%e4%b8%8b%e8%bd%bd/