成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

java如何通過url讀取遠程數(shù)據(jù)并保持到本地-創(chuàng)新互聯(lián)

這篇文章將為大家詳細講解有關(guān)java如何通過url讀取遠程數(shù)據(jù)并保持到本地,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)建站專注于勐臘企業(yè)網(wǎng)站建設(shè),響應式網(wǎng)站建設(shè),商城網(wǎng)站建設(shè)。勐臘網(wǎng)站建設(shè)公司,為勐臘等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站建設(shè),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

如何我就開始琢磨,最開始,我直接使用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)絡(luò)工具類,將緩存中的圖片地址全部下載到本地本次為圖片

  5. 將圖片通過pdf工作轉(zhuǎn)為pdf

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

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

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

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

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

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

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;
}
// 將服務(wù)器響應的數(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)用:

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);
});

關(guān)于“java如何通過url讀取遠程數(shù)據(jù)并保持到本地”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

新聞標題:java如何通過url讀取遠程數(shù)據(jù)并保持到本地-創(chuàng)新互聯(lián)
URL地址:http://jinyejixie.com/article6/jseog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)網(wǎng)頁設(shè)計公司、靜態(tài)網(wǎng)站、微信公眾號、移動網(wǎng)站建設(shè)、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
渭南市| 正阳县| 长汀县| 贵南县| 钟祥市| 科尔| 上虞市| 乌鲁木齐县| 丹凤县| 永嘉县| 临颍县| 宁陵县| 丽江市| 泾川县| 嘉定区| 彰化市| 池州市| 行唐县| 泾川县| 陆川县| 溧水县| 板桥市| 阳山县| 塔河县| 景宁| 汝阳县| 左云县| 乳源| 永寿县| 闸北区| 拉孜县| 安义县| 合江县| 天津市| 邵阳市| 图木舒克市| 乐至县| 包头市| 涡阳县| 建湖县| 东海县|