一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術(shù)及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java通過url讀取遠程數(shù)據(jù)并保持到本地的實例代碼

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

2021-05-12 15:51狐狽筱筱生 Java教程

本文通過實例代碼給大家介紹了java通過url讀取遠程數(shù)據(jù)并保持到本地的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

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

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

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

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

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

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

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

第5步直接網(wǎng)上在線服務就可以實現(xiàn)。

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

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

下面附上java通過url獲取網(wǎng)絡數(shù)據(jù)保存到本地的代碼。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class httpurlconnectionutil {
// 通過get請求得到讀取器響應數(shù)據(jù)的數(shù)據(jù)流
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;
}
// 將服務器響應的數(shù)據(jù)流存到本地文件
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();
  }
}
}

調(diào)用:

?
1
2
3
4
5
6
7
8
9
10
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);
});

總結(jié)

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

原文鏈接:http://blog.51cto.com/yuqian2203/2135284

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91东航翘臀女神在线播放 | 久久99re热在线播放7 | 欧美视频一 | 久久亚洲精品中文字幕60分钟 | 日韩精品欧美激情国产一区 | 青青青视频免费观看 | 国产综合亚洲欧美日韩一区二区 | 精品区卡一卡2卡三免费 | 水多多凹凸福利视频导航 | 国产亚洲精品福利在线 | gogort人体的最新网站 | 国产精品原创巨作无遮挡 | www.精品视频| www红色一片在线观看版 | 国产在线麻豆波多野结衣 | 女学生被老师调教在教室 | 我要看黄色毛片 | 青春娱乐国产分类精品二 | chinesemature精品 chinesefree普通对话 | 亚洲精品久久久久福利网站 | 亚洲精品一区制服丝袜 | 国产精品视频在这里有精品 | 国产美女做爰免费视频软件 | 美女下面被cao出水 美女污视频 | 国产成人精品曰本亚洲77美色 | 免费在线视频网站 | 不良小说| 边摸边吃奶又黄激烈视频韩国 | 公交车上插入 | 久久视热频国产这里只有精品23 | 女人肮脏的交易中文字幕未删减版 | 日本xxxxn1819| 四虎国产成人亚洲精品 | 亚洲大尺码 | 日本韩国无矿砖码 | 亚欧日韩 | 美女脱了内裤打开腿让人桶网站o | 日本一区二区三区久久精品 | 国产精品久久国产精品99 gif | 午夜影院免费观看视频 | 暖暖 免费 高清 日本 在线1 |