国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

基于Java實(shí)現(xiàn)批量下載網(wǎng)絡(luò)圖片

2019-11-15 00:43:31
字體:
供稿:網(wǎng)友
基于java實(shí)現(xiàn)批量下載網(wǎng)絡(luò)圖片

昨天朋友做項(xiàng)目遇到一個(gè)需求,需要把上千個(gè)的微博表情圖片下載到本地磁盤,并做好規(guī)范命名,塞給我一堆Json數(shù)據(jù),讓我?guī)兔μ幚硐拢凑e著也沒事干,就幫忙寫了。(很簡(jiǎn)單的一個(gè)功能,隨手記錄下,剛好填補(bǔ)下最近博客的空白)

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

嘿嘿,突然發(fā)現(xiàn)會(huì)寫程序是件好事,一千多張表情圖片要是手動(dòng)下載再進(jìn)行改名,非得忙個(gè)2天2夜不可。。

好了,言歸正傳,說下代碼實(shí)現(xiàn),分成3步:

1、獲取Json數(shù)據(jù)

2、根據(jù)Json數(shù)據(jù)所提供的圖片資源地址進(jìn)行下載

3、分類,規(guī)范命名

先來看下Json數(shù)據(jù)格式:

為了方便操作,我封裝了一個(gè)數(shù)據(jù)實(shí)體類

 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 }

然后我寫了一個(gè)工具類封裝了一些方法

分別用來處理(網(wǎng)絡(luò)數(shù)據(jù)的獲取,Json數(shù)據(jù)的反序列化,對(duì)圖片資源的下載)

  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      * 根據(jù)所提供的url地址獲取Json數(shù)據(jù) 28      *  29      * @param path 30      * @return 31      */ 32     public String getHttpString(String path) { 33         // 存放獲取到的數(shù)據(jù) 34         String info = ""; 35         // 網(wǎng)絡(luò)請(qǐng)求所需變量 36         InputStream in = null; 37         InputStreamReader reader = null; 38         BufferedReader bufferedReader = null; 39         try { 40             URL url = new URL(path); 41             // 根據(jù)Url打開地址,以u(píng)tf-8編碼的形式返回輸入流 42             in = url.openStream(); 43             reader = new InputStreamReader(in, "utf-8"); 44             bufferedReader = new BufferedReader(reader); 45             // 臨時(shí)接受數(shù)據(jù)變量 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數(shù)據(jù)反序列化成Java對(duì)象(List集合) 69      *  70      * @param json 71      * @return 72      */ 73     public List<Bean> changeJsonToList(String json) { 74         // 利用Gson將JSON數(shù)據(jù)反序列化成JAVA對(duì)象 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      * 下載圖片,并按照指定的路徑存儲(chǔ) 83      * @param bean 84      * @param filePath 85      */ 86     public void makeImage(Bean bean, String filePath) { 87         // 網(wǎng)絡(luò)請(qǐng)求所需變量 88         try { 89             //獲取輸入流 90             BufferedInputStream in = new BufferedInputStream(new URL(bean.getUrl()).openStream()); 91             //創(chuàng)建文件流 92             File file = new File(filePath + bean.getPhrase()+".gif"); 93             BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file)); 94             //緩沖字節(jié)數(shù)組 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("正在執(zhí)行下載任務(wù):當(dāng)前正在下載圖片" + 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 }

上面代碼對(duì)于Json數(shù)據(jù)的處理,我用到了谷歌給我們提供的Gson工具類

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

《Gson簡(jiǎn)要使用筆記》:http://www.survivalescaperooms.com/lichenwei/p/3987429.html

接著,就是調(diào)用主類:

 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的一些個(gè)人隱私數(shù)據(jù)就不給出了";11     private static String mJsonInfo;12 13     public static void main(String[] args) {14         HelpUtils helpUtils = new HelpUtils();15         // 獲取Json數(shù)據(jù)16         mJsonInfo = helpUtils.getHttpString(URL);17         // 將Json數(shù)據(jù)反序列化成java對(duì)象18         List<Bean> beans = helpUtils.changeJsonToList(mJsonInfo);19         //循環(huán)遍歷下載圖片20         for (int i = 0; i < beans.size(); i++) {21             helpUtils.makeImage(beans.get(i), "C:/images/");22         }23 24     }25 26 }

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

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


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 建水县| 汕头市| 武宣县| 大同县| 尉犁县| 德州市| 巧家县| 清新县| 舟山市| 云霄县| 法库县| 乐业县| 兴安盟| 新乡县| 衢州市| 南平市| 红安县| 澜沧| 葫芦岛市| 百色市| 内乡县| 盱眙县| 沂水县| 郸城县| 古田县| 宁晋县| 合作市| 纳雍县| 贵溪市| 勐海县| 缙云县| 紫金县| 恩平市| 应用必备| 富源县| 富蕴县| 东明县| 新乡县| 黔南| 同心县| 三台县|