zoukankan      html  css  js  c++  java
  • 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/ 

  • 相关阅读:
    大四实习有点晚[转载]
    .net2.0数据绑定语法
    明天要去南京了
    Master & Content Page Relation(Event Ordering)
    在验证中使用图像和声音(ErrorMessage)
    设置FLash透明
    Basic Skill in .net2.0
    教育研究方法
    程序员是如何捕猎大象的[转]
    My lost card
  • 原文地址:https://www.cnblogs.com/songsu/p/11307097.html
Copyright © 2011-2022 走看看