国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android基于HttpUrlConnection類(lèi)的文件下載實(shí)例代碼

2019-12-12 02:06:47
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

廢話(huà)不多說(shuō)了,直接給大家貼代碼了,具體代碼如所示:

/**   * get方法的文件下載   * <p>   * 特別說(shuō)明 android中的progressBar是google唯一的做了處理的可以在子線(xiàn)程中更新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);          //打開(kāi)鏈接          connection = (HttpURLConnection) url.openConnection();          //設(shè)置鏈接超時(shí)          connection.setConnectTimeout(4000);          //設(shè)置允許得到服務(wù)器的輸入流,默認(rèn)為true可以不用設(shè)置          connection.setDoInput(true);          //設(shè)置允許向服務(wù)器寫(xiě)入數(shù)據(jù),一般get方法不會(huì)設(shè)置,大多用在post方法,默認(rèn)為false          connection.setDoOutput(true);//此處只是為了方法說(shuō)明          //設(shè)置請(qǐng)求方法          connection.setRequestMethod("GET");          //設(shè)置請(qǐng)求的字符編碼          connection.setRequestProperty("Charset", "utf-8");          //設(shè)置connection打開(kāi)鏈接資源          connection.connect();          //得到鏈接地址中的file路徑          String urlFilePath = connection.getURL().getFile();          //得到url地址總文件名 file的separatorChar參數(shù)表示文件分離符          String fileName = urlFilePath.substring(urlFilePath.lastIndexOf(File.separatorChar) + 1);          //創(chuàng)建一個(gè)文件對(duì)象用于存儲(chǔ)下載的文件 此次的getFilesDir()方法只有在繼承至Context類(lèi)的類(lèi)中          // 可以直接調(diào)用其他類(lèi)中必須通過(guò)Context對(duì)象才能調(diào)用,得到的是內(nèi)部存儲(chǔ)中此應(yīng)用包名下的文件路徑          //如果使用外部存儲(chǔ)的話(huà)需要添加文件讀寫(xiě)權(quán)限,5.0以上的系統(tǒng)需要?jiǎng)討B(tài)獲取權(quán)限 此處不在不做過(guò)多說(shuō)明。          File file = new File(getFilesDir(), fileName);          //創(chuàng)建一個(gè)文件輸出流          FileOutputStream outputStream = new FileOutputStream(file);          //得到鏈接的響應(yīng)碼 200為成功          int responseCode = connection.getResponseCode();          if (responseCode == HttpURLConnection.HTTP_OK) {            //得到服務(wù)器響應(yīng)的輸入流            InputStream inputStream = connection.getInputStream();            //獲取請(qǐng)求的內(nèi)容總長(zhǎng)度            int contentLength = connection.getContentLength();            //設(shè)置progressBar的Max            mPb.setMax(contentLength);            //創(chuàng)建緩沖輸入流對(duì)象,相對(duì)于inputStream效率要高一些            BufferedInputStream bfi = new BufferedInputStream(inputStream);            //此處的len表示每次循環(huán)讀取的內(nèi)容長(zhǎng)度            int len;            //已經(jīng)讀取的總長(zhǎng)度            int totle = 0;            //bytes是用于存儲(chǔ)每次讀取出來(lái)的內(nèi)容            byte[] bytes = new byte[1024];            while ((len = bfi.read(bytes)) != -1) {              //每次讀取完了都將len累加在totle里              totle += len;              //每次讀取的都更新一次progressBar              mPb.setProgress(totle);              //通過(guò)文件輸出流寫(xiě)入從服務(wù)器中讀取的數(shù)據(jù)              outputStream.write(bytes, 0, len);            }            //關(guān)閉打開(kāi)的流對(duì)象            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類(lèi)的文件下載實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)武林網(wǎng)網(wǎng)站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 潍坊市| 唐山市| 久治县| 天祝| 庄河市| 汉寿县| 离岛区| 曲阜市| 赞皇县| 乳源| 静海县| 南宫市| 巍山| 澳门| 镇平县| 思南县| 郓城县| 新宁县| 舒兰市| 汉源县| 北辰区| 伊金霍洛旗| 龙江县| 炉霍县| 逊克县| 耒阳市| 从江县| 九龙坡区| 图木舒克市| 潞西市| 松溪县| 荣成市| 陆良县| 江源县| 文水县| 枞阳县| 长兴县| 潮安县| 长宁县| 萨迦县| 云梦县|