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

java通過url讀取遠程數據并保持到本地的實例代碼

 更新時間:2018年07月03日 10:21:26   作者:狐狽筱筱生  
本文通過實例代碼給大家介紹了java通過url讀取遠程數據并保持到本地的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

前幾天老姐突然告訴我,她在JD上買了本電子圖書,如何買完發(fā)現,只能在線或者使用它自己的閱讀器看,很不方便,讓我給想想辦法。

如何我就開始琢磨,最開始,我直接使用Acrobat Reader打開,發(fā)現只有目錄,沒有其他,而且頁面上面的都存在,我想可能在正確的內容上增加了一塊蒙版,只能用"鑰匙"的人可以過濾它,要破解別人的編輯器,短時間肯定是不行的的,網上也有很多人想到的是使用自動化腳本去自動對官方閱讀器截圖,但是我發(fā)現,截圖不是一頁一頁的,這就很懵逼了。最后只能通過在線閱讀這條線來想辦法。

這個辦法和網友的類似,都是保存為圖片,如何通過pdf工具制作成pdf。

在線閱讀驚奇發(fā)現,文檔真好,一頁一張圖片,它已經給你做好,只是每次只更新出當前頁的前后幾張,其他的會被清除。到這里,思路就有了:

  1. 跳轉到第n頁
  2. 拉取刷新出來的額圖片路徑
  3. 保存圖片路徑到緩存(我使用的是redis)
  4. 通過網絡工具類,將緩存中的圖片地址全部下載到本地本次為圖片
  5. 將圖片通過pdf工作轉為pdf

第1步到第3步需要重復,可以使用自動工具和腳本來實現。

第4步寫個控制器就可以了,最簡單的java接口就行。

第5步直接網上在線服務就可以實現。

為什么需要先緩存在下載咧,這里涉及到一個效率與圖片去重和過濾的問題,因為每次調整后獲取的圖片可能有重復的,存在redis的map中,自動就去重了;也是為了避免一邊獲取圖片路徑,一邊下載中途異常退出等任務不能正常執(zhí)行完畢等問題。然后腳本獲取路徑,后保存到自己的服務器,唯一的問題可能就是跨域的問題。結果發(fā)現還是少了幾張圖,這樣就體會出使用緩存的好處了,可以直接通過代碼驗證少了那幾張圖,不用去檢查jpg文件,少的文件個位數,最后通過手動補全了。

通過這種方式得到的圖片,唯一缺陷就是帶有"JD讀書"字樣和圖片分辨率不是很高,字體好像帶點毛腳。有強迫癥或者追求高品質的,就使用官方閱讀器吧,個人看了蠻清晰的,是文檔,不是圖片?。?!

下面附上java通過URL獲取網絡數據保存到本地的代碼。

public class HttpURLConnectionUtil {
// 通過get請求得到讀取器響應數據的數據流
public static InputStream getInputStreamByGet(String url) {
  try {
    HttpURLConnection conn = (HttpURLConnection) new URL(url)
        .openConnection();
    conn.setReadTimeout(5000);
    conn.setConnectTimeout(5000);
    conn.setRequestMethod("GET");
    if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
      InputStream inputStream = conn.getInputStream();
      return inputStream;
    }
  } catch (IOException e) {
    e.printStackTrace();
  }
  return null;
}
// 將服務器響應的數據流存到本地文件
public static void saveData(InputStream is, File file) {
  try (BufferedInputStream bis = new BufferedInputStream(is);
     BufferedOutputStream bos = new BufferedOutputStream(
         new FileOutputStream(file));) {
    byte[] buffer = new byte[1024];
    int len = -1;
    while ((len = bis.read(buffer)) != -1) {
      bos.write(buffer, 0, len);
      bos.flush();
    }
  } catch (IOException e) {
    e.printStackTrace();
  }
}
}

調用:

Set<String> imgNumber = (Set<String>) redisTemplate.opsForHash().keys(MAP_KEY);
imgNumber.stream().forEach(e->{
        String url = (String) redisTemplate.opsForHash().get(MAP_KEY,e);
        String fileName = e+".jpg";
        File file = new File("E:\\pdf圖片\\", fileName);

        InputStream inputStream = HttpURLConnectionUtil
            .getInputStreamByGet(url);
        HttpURLConnectionUtil.saveData(inputStream, file);
});

總結

以上所述是小編給大家介紹的java通過url讀取遠程數據并保持到本地的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • 了解SpringMVC的上傳和下載

    了解SpringMVC的上傳和下載

    今天小編就為大家分享一篇關于Spring整合Springmvc的相關介紹,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2021-07-07
  • SpringBoot實現優(yōu)雅停機的流程步驟

    SpringBoot實現優(yōu)雅停機的流程步驟

    優(yōu)雅停機(Graceful Shutdown) 是指在服務器需要關閉或重啟時,能夠先處理完當前正在進行的請求,然后再停止服務的操作,本文給大家介紹了SpringBoot實現優(yōu)雅停機的流程步驟,需要的朋友可以參考下
    2024-03-03
  • Java如何使用命令查看內存占用情況

    Java如何使用命令查看內存占用情況

    jhat是一個用于分析Java堆轉儲文件的工具,通過啟動Web服務器并加載堆轉儲文件,可以在瀏覽器中查看占用最多內存的類及其詳細信息
    2025-02-02
  • 使用graalvm為帶有反射功能的java代碼生成native?image的示例詳解

    使用graalvm為帶有反射功能的java代碼生成native?image的示例詳解

    graalvm讓native鏡像支持反射的關鍵是利用json提前告訴它哪些類的哪些方法會被反射調用,然后它就能力在運行時支持反射了,這篇文章主要介紹了如何使用graalvm為帶有反射功能的java代碼生成native?image,需要的朋友可以參考下
    2024-02-02
  • Springboot如何實現自定義異常數據

    Springboot如何實現自定義異常數據

    這篇文章主要介紹了Springboot如何實現自定義異常數據,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • spring boot微服務自定義starter原理詳解

    spring boot微服務自定義starter原理詳解

    這篇文章主要介紹了spring boot微服務自定義starter原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Java中空指針異常的幾種解決方案

    Java中空指針異常的幾種解決方案

    這篇文章主要介紹了Java中空指針異常的幾種解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • jenkins自動構建SpringCloud流程

    jenkins自動構建SpringCloud流程

    文章介紹了如何使用Jenkins和docker-compose自動部署SpringCloud和Vue項目,首先,下載并安裝Jenkins,并配置Jenkins以自動啟動,然后,配置GitLab插件和NodeJS插件,以便可以從GitLab倉庫中獲取代碼并構建,接下來,創(chuàng)建一個Jenkins任務來構建Vue項目
    2025-02-02
  • 解決Java 部署Tomcat時使用jni和jna調用DLL文件的問題

    解決Java 部署Tomcat時使用jni和jna調用DLL文件的問題

    這篇文章主要介紹了解決Java 部署Tomcat時使用jni和jna調用DLL文件的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 如何基于Jenkins構建Docker鏡像

    如何基于Jenkins構建Docker鏡像

    這篇文章主要介紹了基于Jenkins構建Docker鏡像,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11

最新評論

洛阳市| 北票市| 台中县| 师宗县| 古交市| 金溪县| 濮阳市| 阿坝县| 尼木县| 永兴县| 当阳市| 德格县| 崇左市| 彭阳县| 双桥区| 汉中市| 湘潭县| 潞西市| 大方县| 佳木斯市| 上栗县| 株洲市| 来宾市| 乐至县| 星子县| 平罗县| 岳西县| 军事| 葵青区| 辰溪县| 布尔津县| 略阳县| 永济市| 安仁县| 额济纳旗| 那曲县| 乌拉特中旗| 乐至县| 涞水县| 庐江县| 开阳县|