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

Android基于HttpUrlConnection類的文件下載實例代碼

 更新時間:2017年09月01日 17:23:03   作者:何叫獸  
本文通過實例代碼給大家介紹了Android基于HttpUrlConnection類的文件下載功能,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧

廢話不多說了,直接給大家貼代碼了,具體代碼如所示:

/**
   * get方法的文件下載
   * <p>
   * 特別說明 android中的progressBar是google唯一的做了處理的可以在子線程中更新UI的控件
   *
   * @param path
   */
  private void httpDown(final String path) {
    new Thread() {
      @Override
      public void run() {
        URL url;
        HttpURLConnection connection;
        try {
          //統(tǒng)一資源
          url = new URL(path);
          //打開鏈接
          connection = (HttpURLConnection) url.openConnection();
          //設置鏈接超時
          connection.setConnectTimeout(4000);
          //設置允許得到服務器的輸入流,默認為true可以不用設置
          connection.setDoInput(true);
          //設置允許向服務器寫入數(shù)據(jù),一般get方法不會設置,大多用在post方法,默認為false
          connection.setDoOutput(true);//此處只是為了方法說明
          //設置請求方法
          connection.setRequestMethod("GET");
          //設置請求的字符編碼
          connection.setRequestProperty("Charset", "utf-8");
          //設置connection打開鏈接資源
          connection.connect();
          //得到鏈接地址中的file路徑
          String urlFilePath = connection.getURL().getFile();
          //得到url地址總文件名 file的separatorChar參數(shù)表示文件分離符
          String fileName = urlFilePath.substring(urlFilePath.lastIndexOf(File.separatorChar) + 1);
          //創(chuàng)建一個文件對象用于存儲下載的文件 此次的getFilesDir()方法只有在繼承至Context類的類中
          // 可以直接調(diào)用其他類中必須通過Context對象才能調(diào)用,得到的是內(nèi)部存儲中此應用包名下的文件路徑
          //如果使用外部存儲的話需要添加文件讀寫權(quán)限,5.0以上的系統(tǒng)需要動態(tài)獲取權(quán)限 此處不在不做過多說明。
          File file = new File(getFilesDir(), fileName);
          //創(chuàng)建一個文件輸出流
          FileOutputStream outputStream = new FileOutputStream(file);
          //得到鏈接的響應碼 200為成功
          int responseCode = connection.getResponseCode();
          if (responseCode == HttpURLConnection.HTTP_OK) {
            //得到服務器響應的輸入流
            InputStream inputStream = connection.getInputStream();
            //獲取請求的內(nèi)容總長度
            int contentLength = connection.getContentLength();
            //設置progressBar的Max
            mPb.setMax(contentLength);
            //創(chuàng)建緩沖輸入流對象,相對于inputStream效率要高一些
            BufferedInputStream bfi = new BufferedInputStream(inputStream);
            //此處的len表示每次循環(huán)讀取的內(nèi)容長度
            int len;
            //已經(jīng)讀取的總長度
            int totle = 0;
            //bytes是用于存儲每次讀取出來的內(nèi)容
            byte[] bytes = new byte[1024];
            while ((len = bfi.read(bytes)) != -1) {
              //每次讀取完了都將len累加在totle里
              totle += len;
              //每次讀取的都更新一次progressBar
              mPb.setProgress(totle);
              //通過文件輸出流寫入從服務器中讀取的數(shù)據(jù)
              outputStream.write(bytes, 0, len);
            }
            //關(guān)閉打開的流對象
            outputStream.close();
            inputStream.close();
            bfi.close();
            runOnUiThread(new Runnable() {
              @Override
              public void run() {
                Toast.makeText(MainActivity.this, "下載完成!", Toast.LENGTH_SHORT).show();
              }
            });
          }
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }.start();
  }

總結(jié)

以上所述是小編給大家介紹的Android基于HttpUrlConnection類的文件下載實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Android中操作SQLite數(shù)據(jù)庫快速入門教程

    Android中操作SQLite數(shù)據(jù)庫快速入門教程

    這篇文章主要介紹了Android中操作SQLite數(shù)據(jù)庫快速入門教程,本文講解了數(shù)據(jù)庫基礎(chǔ)概念、Android平臺下數(shù)據(jù)庫相關(guān)類、創(chuàng)建數(shù)據(jù)庫、向表格中添加數(shù)據(jù)、從表格中查詢記錄等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • 在Android界面上顯示和獲取Logcat日志輸出的方法

    在Android界面上顯示和獲取Logcat日志輸出的方法

    這篇文章主要介紹了在Android界面上顯示和獲取Logcat日志輸出的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Android中復制圖片的實例代碼

    Android中復制圖片的實例代碼

    本文通過實例代碼給大家介紹了android 復制圖片的實現(xiàn)方法,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-08-08
  • Android 環(huán)境變量的配置方法

    Android 環(huán)境變量的配置方法

    本文主要介紹Android 環(huán)境變量的配置方法,這里詳細講解了如何實現(xiàn)環(huán)境變量的配置方法,有興趣的小伙伴可以參考下
    2016-09-09
  • Android自定義Drawable實現(xiàn)圓形和圓角

    Android自定義Drawable實現(xiàn)圓形和圓角

    這篇文章主要為大家詳細介紹了Android自定義Drawable實現(xiàn)圓形和圓角,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • android輸入框內(nèi)容改變的監(jiān)聽事件實例

    android輸入框內(nèi)容改變的監(jiān)聽事件實例

    下面小編就為大家分享一篇android輸入框內(nèi)容改變的監(jiān)聽事件實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Android自定義密碼樣式 黑點轉(zhuǎn)換成特殊字符

    Android自定義密碼樣式 黑點轉(zhuǎn)換成特殊字符

    這篇文章主要為大家詳細介紹了Android自定義密碼樣式的制作方法,黑點換成¥、%等特殊字符,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Android RecyclerView的卡頓問題的解決方法

    Android RecyclerView的卡頓問題的解決方法

    本篇文章主要介紹了Android RecyclerView的卡頓問題的解決方法,具有一定的參考價值,有興趣的可以了解一下。
    2017-04-04
  • 淺談React Native打包apk的坑

    淺談React Native打包apk的坑

    下面小編就為大家?guī)硪黄獪\談React Native打包apk的坑。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • android生命周期深入分析(二)

    android生命周期深入分析(二)

    Android 程序的生命周期是由系統(tǒng)控制而非程序自身直接控制。這和我們編寫桌面應用程序時的思維有一些不同,本文將詳細介紹,需要了解的朋友可以參考下
    2012-12-12

最新評論

延川县| 治多县| 扎赉特旗| 迭部县| 宜章县| 汶川县| 康乐县| 辰溪县| 黄梅县| 迭部县| 阳信县| 大新县| 勃利县| 改则县| 榆社县| 万宁市| 东乡县| 奇台县| 胶州市| 民丰县| 自贡市| 滕州市| 东海县| 留坝县| 东乌| 太康县| 怀宁县| 英山县| 龙里县| 陈巴尔虎旗| 盘锦市| 迁西县| 阿拉善左旗| 德惠市| 独山县| 蕉岭县| 会昌县| 辛集市| 报价| 阳山县| 交口县|