亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

基于Java實現批量下載網絡圖片

2019-11-15 00:43:31
字體:
來源:轉載
供稿:網友
基于java實現批量下載網絡圖片

昨天朋友做項目遇到一個需求,需要把上千個的微博表情圖片下載到本地磁盤,并做好規范命名,塞給我一堆Json數據,讓我幫忙處理下,反正閑著也沒事干,就幫忙寫了。(很簡單的一個功能,隨手記錄下,剛好填補下最近博客的空白)

由于只是方便自己的工具,就不需要什么圖形界面了,就用Java去寫了,先看下效果圖~

嘿嘿,突然發現會寫程序是件好事,一千多張表情圖片要是手動下載再進行改名,非得忙個2天2夜不可。。

好了,言歸正傳,說下代碼實現,分成3步:

1、獲取Json數據

2、根據Json數據所提供的圖片資源地址進行下載

3、分類,規范命名

先來看下Json數據格式:

為了方便操作,我封裝了一個數據實體類

 1 package com.lcw.downloadutil.domain; 2  3 public class Bean { 4  5     PRivate String phrase; 6     private String type; 7     private String url; 8     private Boolean hot; 9     private Boolean common;10     private String category;11     private String icon;12     private String value;13     private String picid;14 15     public String getPhrase() {16         return phrase;17     }18 19     public void setPhrase(String phrase) {20         this.phrase = phrase;21     }22 23     public String getType() {24         return type;25     }26 27     public void setType(String type) {28         this.type = type;29     }30 31     public String getUrl() {32         return url;33     }34 35     public void setUrl(String url) {36         this.url = url;37     }38 39     public Boolean getHot() {40         return hot;41     }42 43     public void setHot(Boolean hot) {44         this.hot = hot;45     }46 47     public Boolean getCommon() {48         return common;49     }50 51     public void setCommon(Boolean common) {52         this.common = common;53     }54 55     public String getCategory() {56         return category;57     }58 59     public void setCategory(String category) {60         this.category = category;61     }62 63     public String getIcon() {64         return icon;65     }66 67     public void setIcon(String icon) {68         this.icon = icon;69     }70 71     public String getValue() {72         return value;73     }74 75     public void setValue(String value) {76         this.value = value;77     }78 79     public String getPicid() {80         return picid;81     }82 83     public void setPicid(String picid) {84         this.picid = picid;85     }86 87     @Override88     public String toString() {89         return "Bean [phrase=" + phrase + ", type=" + type + ", url=" + url + ", hot=" + hot + ", common=" + common + ", category=" + category + ", icon=" + icon + ", value=" + value + ", picid=" + picid + "]";90     }91 92 }

然后我寫了一個工具類封裝了一些方法

分別用來處理(網絡數據的獲取,Json數據的反序列化,對圖片資源的下載)

  1 package com.lcw.downloadutil.utils;  2   3 import java.io.BufferedInputStream;  4 import java.io.BufferedOutputStream;  5 import java.io.BufferedReader;  6 import java.io.File;  7 import java.io.FileOutputStream;  8 import java.io.IOException;  9 import java.io.InputStream; 10 import java.io.InputStreamReader; 11 import java.net.MalformedURLException; 12 import java.net.URL; 13 import java.util.List; 14  15 import com.google.gson.Gson; 16 import com.google.gson.reflect.TypeToken; 17 import com.lcw.downloadutil.domain.Bean; 18  19 /** 20  * 工具類集合 21  *  22  * @author Rabbit_Lee 23  *  24  */ 25 public class HelpUtils { 26     /** 27      * 根據所提供的url地址獲取Json數據 28      *  29      * @param path 30      * @return 31      */ 32     public String getHttpString(String path) { 33         // 存放獲取到的數據 34         String info = ""; 35         // 網絡請求所需變量 36         InputStream in = null; 37         InputStreamReader reader = null; 38         BufferedReader bufferedReader = null; 39         try { 40             URL url = new URL(path); 41             // 根據Url打開地址,以utf-8編碼的形式返回輸入流 42             in = url.openStream(); 43             reader = new InputStreamReader(in, "utf-8"); 44             bufferedReader = new BufferedReader(reader); 45             // 臨時接受數據變量 46             String temp = null; 47             while ((temp = bufferedReader.readLine()) != null) { 48                 info += temp; 49             } 50             return info; 51         } catch (MalformedURLException e) { 52             e.printStackTrace(); 53         } catch (IOException e) { 54             e.printStackTrace(); 55         } finally { 56             try { 57                 in.close(); 58                 reader.close(); 59                 bufferedReader.close(); 60             } catch (IOException e) { 61                 e.printStackTrace(); 62             } 63         } 64         return null; 65     } 66  67     /** 68      * 將所提供的Json數據反序列化成Java對象(List集合) 69      *  70      * @param json 71      * @return 72      */ 73     public List<Bean> changeJsonToList(String json) { 74         // 利用Gson將JSON數據反序列化成JAVA對象 75         Gson gson = new Gson(); 76         List<Bean> beans = gson.fromJson(json, new TypeToken<List<Bean>>() { 77         }.getType()); 78         return beans; 79     } 80  81     /** 82      * 下載圖片,并按照指定的路徑存儲 83      * @param bean 84      * @param filePath 85      */ 86     public void makeImage(Bean bean, String filePath) { 87         // 網絡請求所需變量 88         try { 89             //獲取輸入流 90             BufferedInputStream in = new BufferedInputStream(new URL(bean.getUrl()).openStream()); 91             //創建文件流 92             File file = new File(filePath + bean.getPhrase()+".gif"); 93             BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file)); 94             //緩沖字節數組 95             byte[] data = new byte[2048]; 96             int length = in.read(data); 97             while (length != -1) { 98                 out.write(data, 0, data.length); 99                 length = in.read(data);100             }101             System.out.println("正在執行下載任務:當前正在下載圖片" + bean.getPhrase() + ".gif");102             in.close();103             out.close();104         } catch (MalformedURLException e) {105             e.printStackTrace();106         } catch (IOException e) {107             e.printStackTrace();108         }109     }110 111 }

上面代碼對于Json數據的處理,我用到了谷歌給我們提供的Gson工具類

對于Gson類不懂使用的朋友可以看下我之前寫過的一篇文章:

《Gson簡要使用筆記》:http://www.49028c.com/lichenwei/p/3987429.html

接著,就是調用主類:

 1 package com.lcw.downloadutil.main; 2  3 import java.util.List; 4  5 import com.lcw.downloadutil.domain.Bean; 6 import com.lcw.downloadutil.utils.HelpUtils; 7  8 public class TaskMain { 9 10     private static final String URL = "這里涉及到Oauth2.0的一些個人隱私數據就不給出了";11     private static String mJsonInfo;12 13     public static void main(String[] args) {14         HelpUtils helpUtils = new HelpUtils();15         // 獲取Json數據16         mJsonInfo = helpUtils.getHttpString(URL);17         // 將Json數據反序列化成java對象18         List<Bean> beans = helpUtils.changeJsonToList(mJsonInfo);19         //循環遍歷下載圖片20         for (int i = 0; i < beans.size(); i++) {21             helpUtils.makeImage(beans.get(i), "C:/images/");22         }23 24     }25 26 }

到這里就完事了,有哪里不清楚的朋友,可以在下面文章評論交流。

作者:Balla_兔子出處:http://www.49028c.com/lichenwei/本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。正在看本人博客的這位童鞋,我看你氣度不凡,談吐間隱隱有王者之氣,日后必有一番作為!旁邊有“推薦”二字,你就順手把它點了吧,相得準,我分文不收;相不準,你也好回來找我!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产男女猛烈无遮挡91| 日韩欧美在线视频免费观看| 亚洲国产美女精品久久久久∴| 色综合天天狠天天透天天伊人| 日韩一区av在线| 国产精品扒开腿做爽爽爽的视频| 国产成+人+综合+亚洲欧美丁香花| 日韩成人激情在线| 欧美日韩国产二区| 国产亚洲成精品久久| 91精品视频播放| 国产成人精品久久二区二区| 91日本在线观看| 成人免费观看49www在线观看| 国产精品第七影院| 国产九九精品视频| 国产精品久久久久久久9999| 国产免费一区视频观看免费| 国产精品久久久亚洲| 久久精品国产亚洲| 一本色道久久综合狠狠躁篇的优点| 亚洲香蕉av在线一区二区三区| 亚洲欧美中文在线视频| 久久久久999| 国产精品嫩草影院久久久| 欧美久久久精品| 中文字幕亚洲二区| 日韩中文字幕免费| 91精品中文在线| 91精品国产高清久久久久久91| 久久久久亚洲精品| 欧美精品video| 91高清视频免费| 国产精品男女猛烈高潮激情| 91成人天堂久久成人| 久久久久久欧美| 91欧美日韩一区| 在线日韩第一页| 青草热久免费精品视频| 国产精品久久久久av| 97久久精品在线| 欧美大全免费观看电视剧大泉洋| 2020国产精品视频| 午夜精品一区二区三区av| 久久久久久久电影一区| 色偷偷噜噜噜亚洲男人| 久久久久久香蕉网| 欧洲永久精品大片ww免费漫画| 亚洲石原莉奈一区二区在线观看| 热re99久久精品国产66热| 日韩免费看的电影电视剧大全| 中文欧美在线视频| 久久91亚洲精品中文字幕| 日韩黄色高清视频| 亚洲人成在线观看| 成年人精品视频| 精品亚洲精品福利线在观看| 欧美成人中文字幕在线| 另类色图亚洲色图| 亚洲美女在线看| 高清欧美性猛交xxxx黑人猛交| 欧美日韩美女视频| 国产女同一区二区| 国产剧情久久久久久| 欧美有码在线观看| 神马久久久久久| 免费av一区二区| 亚洲福利视频免费观看| 国产国产精品人在线视| 国产婷婷色综合av蜜臀av| 成人在线视频网站| 欧美电影《睫毛膏》| 精品一区二区三区四区在线| 国产美女扒开尿口久久久| 日韩大胆人体377p| 日韩一区二区在线视频| 夜夜嗨av色综合久久久综合网| 久久精品亚洲热| 国内精品小视频| 91系列在线观看| 久久久久北条麻妃免费看| 91系列在线播放| 国产日韩在线视频| 精品欧美激情精品一区| 国产精品av在线播放| 欧美性xxxx| 国产精品影片在线观看| 欧美裸身视频免费观看| 国产精品成人av在线| 国产精品久久久久久亚洲影视| 日韩精品高清视频| 97精品伊人久久久大香线蕉| 久久久久久久亚洲精品| 久久乐国产精品| 国产在线一区二区三区| 成人一区二区电影| 欧美高清理论片| 国产精品久久久久免费a∨大胸| 国产成人精品视频在线| 日韩欧美在线视频| 91在线无精精品一区二区| 久久久999国产精品| 成人免费视频97| 中国人与牲禽动交精品| 日韩精品中文字幕在线播放| 欧美肥婆姓交大片| 日本精品久久中文字幕佐佐木| 国产精品一区二区久久国产| 在线观看久久av| 欧美日韩国产999| 国产精品影院在线观看| 久久久精品视频成人| 狠狠色狠色综合曰曰| 国产91精品青草社区| 国产日韩欧美夫妻视频在线观看| 日韩av电影院| 亚洲欧美日韩在线高清直播| 国产精品久久999| 亚洲国产中文字幕在线观看| 欧美日本高清一区| 日韩精品视频在线免费观看| 日韩国产中文字幕| 午夜精品久久久久久久99热浪潮| 欧美一级电影久久| 欧美激情精品久久久久久久变态| 国产日韩精品一区二区| 国产日本欧美一区二区三区| 77777亚洲午夜久久多人| 国产精品自拍视频| 欧美高跟鞋交xxxxxhd| 欧美精品在线观看| 日韩亚洲综合在线| 懂色av中文一区二区三区天美| 久久99国产精品自在自在app| 亚洲精品综合久久中文字幕| 国产aⅴ夜夜欢一区二区三区| 午夜精品久久久久久久99黑人| 成人av在线网址| 精品国内产的精品视频在线观看| 国产精品视频一区国模私拍| 亚洲男人天堂2023| 精品久久久久久久久国产字幕| 日本精品免费观看| 亚洲第一中文字幕在线观看| 中文字幕亚洲专区| 欧美激情乱人伦一区| 狠狠操狠狠色综合网| 伊人久久久久久久久久| 亚洲乱码国产乱码精品精天堂| 欧美在线视频网站| 97av在线影院| 精品视频在线播放免| 国内精品小视频在线观看| 亚洲精品一区在线观看香蕉| 国产999在线| 97香蕉久久超级碰碰高清版| 亚洲人成在线免费观看| 永久免费毛片在线播放不卡| 亚洲精品v欧美精品v日韩精品| 欧美大全免费观看电视剧大泉洋| 欧美在线视频观看免费网站| 精品性高朝久久久久久久| 精品亚洲一区二区三区在线播放| 欧美成人在线免费视频|