最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java批量寫入文件和下載圖片的示例代碼

 更新時間:2020年09月17日 09:40:05   作者:zj  
這篇文章主要介紹了Java批量寫入文件和下載圖片的示例代碼,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下

很久沒有在WhitMe上寫日記了,因為覺著在App上寫私密日記的話肯定是不安全的,但是想把日記存下來。,然后看到有導(dǎo)出日記的功能,就把日記導(dǎo)出了(還好可以直接導(dǎo)出,不然就麻煩點)。導(dǎo)出的是一個html文件。可以直接打開,排版都還在。

看了下源碼,是把日記存在一個json數(shù)組里了,圖片還是在服務(wù)器,利用url訪問,文字是在本地了。 但是想把圖片下載到本地,然后和文字對應(yīng),哪篇日記下的哪些圖片。

大概是如下的json數(shù)組。 大概有幾百條,分別是頭像、內(nèi)容:文字||內(nèi)容:圖片、時間。 簡單明了的json結(jié)構(gòu),就想著用java遍歷保存到本地。

[{
  "avatar": "http://static.withme.cn/585****",
  "blocks": [{
    "content": "今天天氣不錯******",
    "type": "text"
  }, {
    "content": "http://static.withme.cn/84ac***",
    "type": "pic"
  }, {
    "content": "http://static.withme.cn/5af2c***",
    "type": "pic"
  }, {
    "content": "http://static.withme.cn/9a4e****",
    "type": "pic"
  }, {
    "content": "http://static.withme.cn/9ffdb***",
    "type": "pic"
  }, {
    "content": "http://static.withme.cn/da5e7db***",
    "type": "pic"
  }, {
    "content": "http://static.withme.cn/e6ccf3764***",
    "type": "pic"
  }, {
    "content": "http://static.withme.cn/73ca***",
    "type": "pic"
  }, {
    "content": "http://static.wi***",
    "type": "pic"
  }, {
    "content": "http://static.withme.cn/4cf7dde****",
    "type": "pic"
  }],
  "dateStr": "2018-09-03",
  "timeStr": "18:59:41"
},{...},...]

將json數(shù)組格式化確保正確然后轉(zhuǎn)成json數(shù)組遍歷。獲取到的圖片下載,文字寫入文檔。

 public static void main(String[] args) {
    CloseableHttpClient client = null;
    JSONArray jsonArray = JSONArray.parseArray(
      "[{
        "avatar": "http://static.withme.cn/585****",
        "blocks": [{
          "content": "今天天氣不錯******",
          "type": "text"
        }, {
          "content": "http://static.withme.cn/84ac***",
          "type": "pic"
        }, {
          "content": "http://static.withme.cn/5af2c***",
          "type": "pic"
        }, {
          "content": "http://static.withme.cn/9a4e****",
          "type": "pic"
        }, {
          "content": "http://static.withme.cn/9ffdb***",
          "type": "pic"
        }, {
          "content": "http://static.withme.cn/da5e7db***",
          "type": "pic"
        }, {
          "content": "http://static.withme.cn/e6ccf3764***",
          "type": "pic"
        }, {
          "content": "http://static.withme.cn/73ca***",
          "type": "pic"
        }, {
          "content": "http://static.wi***",
          "type": "pic"
        }, {
          "content": "http://static.withme.cn/4cf7dde****",
          "type": "pic"
        }],
        "dateStr": "2018-09-03",
        "timeStr": "18:59:41"
      },{...},{...},...]");
 
    try {
      for (int m = 0; m < jsonArray.size(); m++) {
        JSONObject jsonPas = jsonArray.getJSONObject(m);
        JSONArray array = JSONArray.parseArray(jsonPas.get("blocks").toString());
        String time = jsonPas.get("dateStr").toString();
        for (int j = 0; j < array.size(); j++) {
          JSONObject jsPas = array.getJSONObject(j); // 遍歷 jsonarray 數(shù)組,把每一個對象轉(zhuǎn)成 json 對象
          if (jsPas.get("type").equals("text")) {
            FileWriter fileWriter = null;
            try {
              String filePath = "f:/13/" + time;
              File dir = new File(filePath);
              // 檢查放置文件的文件夾路徑是否存在,不存在則創(chuàng)建
              if (!dir.exists()) {
                dir.mkdirs();// mkdirs創(chuàng)建多級目錄
              }
              File checkFile = new File(filePath + "/text" + time + "-" + j + ".txt");
              // 檢查目標文件是否存在,不存在則創(chuàng)建
              if (!checkFile.exists()) {
                checkFile.createNewFile();// 創(chuàng)建目標文件
              }
              // FileWriter(File file, boolean append),append為true時為追加模式,false或缺省則為覆蓋模式
              fileWriter = new FileWriter(checkFile, true);
              String url = jsPas.get("content").toString();
              // 向目標文件中寫入內(nèi)容
              fileWriter.append(url);
              fileWriter.flush();
              System.out.println("寫入成功??!");
            } catch (IOException e) {
              e.printStackTrace();
            } finally {
              try {
                fileWriter.close();
              } catch (IOException e) {
                e.printStackTrace();
              }
            }
          }
          if (jsPas.get("type").equals("pic")) {
            client = HttpClients.createDefault();
            String url = jsPas.get("content").toString();
            String path = "f:/13/" + time;
            // System.out.println(jsPas.get("content"));
            httpGetImg(client, url, path + "/pic" + time + "-" + j + ".jpg");
            System.out.println("ok");
          }
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (client != null) {
        try {
          client.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
  }
 
  /**
   * 發(fā)送get請求, 下載圖片
   * 
   * @param url 路徑
   * @return
   */
  public static void httpGetImg(CloseableHttpClient client, String imgUrl, String savePath) {
    // 發(fā)送get請求
    HttpGet request = new HttpGet(imgUrl);
    // 設(shè)置請求和傳輸超時時間
    RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(50000).setConnectTimeout(50000).build();
    // 設(shè)置請求頭
    request.setHeader("User-Agent",
      "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.79 Safari/537.1");
    request.setConfig(requestConfig);
    try {
      CloseableHttpResponse response = client.execute(request);
      if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode()) {
        HttpEntity entity = response.getEntity();
        InputStream in = entity.getContent();
        FileUtils.copyInputStreamToFile(in, new File(savePath));
        System.out.println("下載圖片成功:" + imgUrl);
      }
    } catch (IOException e) {
      e.printStackTrace();
      throw new RuntimeException(e);
    } finally {
      request.releaseConnection();
    }
  }

JAr包:

 <!-- apache io操作通用jar包 -->
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>
    
   <!-- httpclient 支持jar -->
  <dependency>
    <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
     <version>4.3.5</version>
   </dependency>
   <dependency>
     <groupId>org.apache.httpcomponents</groupId>
     <artifactId>httpmime</artifactId>
     <version>4.3.5</version>
   </dependency>

運行結(jié)果:

保存到本地:

以上就是Java批量寫入文件和下載圖片的示例代碼的詳細內(nèi)容,更多關(guān)于Java批量寫入和下載的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java 算法之快速排序?qū)崿F(xiàn)代碼

    java 算法之快速排序?qū)崿F(xiàn)代碼

    這篇文章主要介紹了java 算法之快速排序?qū)崿F(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 淺談Java垃圾回收機制

    淺談Java垃圾回收機制

    Java 中,程序員不需要關(guān)心所有不再使用的對象。垃圾回收機制自動銷毀這些對象。垃圾回收機制是守護線程的最佳示例,因為它始終在后臺運行。垃圾回收機制的主要目標是通過銷毀無法訪問的對象來釋放堆內(nèi)存。下面我們就來詳細介紹吧
    2021-09-09
  • java大話之創(chuàng)建型設(shè)計模式教程示例

    java大話之創(chuàng)建型設(shè)計模式教程示例

    這篇文章主要為大家介紹了java大話之創(chuàng)建型設(shè)計模式教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Java HttpClient用法的示例詳解

    Java HttpClient用法的示例詳解

    Java開發(fā)語言中實現(xiàn)HTTP請求的方法主要有兩種:一種是JAVA的標準類HttpUrlConnection;另一種是第三方開源框架HTTPClient。本文就將詳細講講Java中HttpClient的使用,需要的可以參考一下
    2022-07-07
  • java 之JNA中的Memory和Pointer的使用方法

    java 之JNA中的Memory和Pointer的使用方法

    這篇文章主要介紹了java 之JNA中的Memory和Pointer的使用方法,文章基于Java的相關(guān)自來哦展開對Pointer和Memory的使用介紹,需要的小伙伴可以參考一下
    2022-04-04
  • Java中接口Set的特點及方法說明

    Java中接口Set的特點及方法說明

    這篇文章主要介紹了Java中接口Set的特點及方法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Spring?Boot整合持久層之JPA多數(shù)據(jù)源

    Spring?Boot整合持久層之JPA多數(shù)據(jù)源

    JPA(Java Persistence API)Java 持久化 API,是 Java 持久化的標準規(guī)范,Hibernate 是持久化規(guī)范的技術(shù)實現(xiàn),而 Spring Data JPA 是在 Hibernate 基礎(chǔ)上封裝的一款框架
    2022-08-08
  • @NonNull導(dǎo)致無法序列化的問題及解決

    @NonNull導(dǎo)致無法序列化的問題及解決

    這篇文章主要介紹了@NonNull導(dǎo)致無法序列化的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • springboot表單提交之validator校驗

    springboot表單提交之validator校驗

    在前臺表單驗證的時候,通常會校驗一些數(shù)據(jù)的可行性,比如是否為空,長度,身份證,郵箱等等,這篇文章主要給大家介紹了關(guān)于springboot表單提交之validator校驗的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • spring級聯(lián)屬性賦值的兩種方式解析

    spring級聯(lián)屬性賦值的兩種方式解析

    這篇文章主要介紹了spring級聯(lián)屬性賦值的兩種方式解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01

最新評論

东源县| 上虞市| 烟台市| 南康市| 麻阳| 清苑县| 当涂县| 吉安县| 嘉义县| 栾城县| 磴口县| 辉南县| 比如县| 甘洛县| 黑山县| 永和县| 昌江| 澄江县| 东阿县| 永嘉县| 明水县| 宁晋县| 洛扎县| 诸城市| 镇江市| 通州区| 永昌县| 慈利县| 阿拉善右旗| 龙口市| 贡觉县| 井陉县| 沭阳县| 郸城县| 门头沟区| 台前县| 民丰县| 宝丰县| 柯坪县| 彰化县| 铜陵市|