1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          Android 文件下載三種基本方式

          來源:互聯網轉載 時間:2024-01-29 08:02:05

          一、自己封裝URLConnection 連接請求類

           public void downloadFile1() {  try{    //下載路徑,如果路徑無效了,可換成你的下載路徑    String url = "http://c.qijingonline.com/test.mkv";    String path = Environment.getExternalStorageDirectory().getAbsolutePath();    final long startTime = System.currentTimeMillis();    Log.i("DOWNLOAD","startTime="+startTime);    //下載函數    String filename=url.substring(url.lastIndexOf("/") + 1);    //獲取文件名    URL myURL = new URL(url);    URLConnection conn = myURL.openConnection();    conn.connect();    InputStream is = conn.getInputStream();    int fileSize = conn.getContentLength();//根據響應獲取文件大小    if (fileSize <= 0) throw new RuntimeException("無法獲知文件大小 ");    if (is == null) throw new RuntimeException("stream is null");    File file1 = new File(path);    if(!file1.exists()){      file1.mkdirs();    }    //把數據存入路徑+文件名    FileOutputStream fos = new FileOutputStream(path+"/"+filename);    byte buf[] = new byte[1024];    int downLoadFileSize = 0;    do{      //循環讀取      int numread = is.read(buf);      if (numread == -1)      {        break;      }      fos.write(buf, 0, numread);      downLoadFileSize += numread;      //更新進度條    } while (true);    Log.i("DOWNLOAD","download success");    Log.i("DOWNLOAD","totalTime="+ (System.currentTimeMillis() - startTime));    is.close();  } catch (Exception ex) {    Log.e("DOWNLOAD", "error: " + ex.getMessage(), ex);  }}

          這種方式在Android 剛興起的時候,很少下載封裝框架,就自己封裝了。雖然一般的文件都能下載,但這種方式缺點很多,不穩定或者各種各樣的問題會出現。

          二、Android自定的下載管理(會在notification 顯示下載的進度,同時可以暫停、重新連接等)

          private void downloadFile2(){  //下載路徑,如果路徑無效了,可換成你的下載路徑  String url = "http://c.qijingonline.com/test.mkv";  //創建下載任務,downloadUrl就是下載鏈接  DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));  //指定下載路徑和下載文件名  request.setDestinationInExternalPublicDir("", url.substring(url.lastIndexOf("/") + 1));  //獲取下載管理器  DownloadManager downloadManager= (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);  //將下載任務加入下載隊列,否則不會進行下載  downloadManager.enqueue(request);}

          這種方式其實就是交給了Android系統的另一個app去下載管理。這樣的好處不會消耗該APP的 CPU資源。缺點是:控制起來很不靈活。

          三、使用第三方 okhttp 網絡請求框架

          private void downloadFile3(){  //下載路徑,如果路徑無效了,可換成你的下載路徑  final String url = "http://c.qijingonline.com/test.mkv";  final long startTime = System.currentTimeMillis();  Log.i("DOWNLOAD","startTime="+startTime);  Request request = new Request.Builder().url(url).build();  new OkHttpClient().newCall(request).enqueue(new Callback() {    @Override    public void onFailure(Call call, IOException e) {      // 下載失敗      e.printStackTrace();      Log.i("DOWNLOAD","download failed");    }    @Override    public void onResponse(Call call, Response response) throws IOException {      Sink sink = null;      BufferedSink bufferedSink = null;      try {        String mSDCardPath= Environment.getExternalStorageDirectory().getAbsolutePath();        File dest = new File(mSDCardPath,  url.substring(url.lastIndexOf("/") + 1));        sink = Okio.sink(dest);        bufferedSink = Okio.buffer(sink);        bufferedSink.writeAll(response.body().source());        bufferedSink.close();        Log.i("DOWNLOAD","download success");        Log.i("DOWNLOAD","totalTime="+ (System.currentTimeMillis() - startTime));      } catch (Exception e) {        e.printStackTrace();        Log.i("DOWNLOAD","download failed");      } finally {        if(bufferedSink != null){          bufferedSink.close();        }      }    }  });}

          okhttp是一個很有名氣的開源框架,目前已經很多大公司都直接使用它作為網絡請求庫(七牛云SDK, 阿里云SDK)。 且里面集成了很多優勢,包括 okio (一個I/O框架,優化內存與CPU)。

          以上所述是小編給大家介紹的Android 文件下載三種基本方式,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          英文publisher什么意思?這不是一回事?!鞍l布者”是指發布者。Bookseller是指圖書銷售商publisher是一種高級的辦公軟件,可以進行文字處理并輸出PDFMicrosoft office publisher是publisher的全稱,是Microsoft發布的桌面出版應用程序。它通常被認為是一個入門級的桌面發布應用程序。它可以提供比Word更強大的頁面元素控制功能,但不如專業的頁面...

          PSP怎么換主題?你可以把下載的主題文件放到PSP/THEME中,然后打開PSP設置,在主題設置中選擇你喜歡的主題。CXMB是一個PSP主題插件。通過這個插件,PSP主題不僅可以改變界面中每個按鈕的圖標,還可以改變按鈕位置、界面結構、菜單字體、音量按鈕、系統音效甚至開機畫面。但是主題包安裝起來比較麻煩,PSP一不小心就會變成磚頭。樓主要用的話,很多論壇都有。你可以試試。里面會有更詳細的解釋。不懂就...

          xp系統默認的管理員密碼是什么?xp系統默認的管理員密碼是administrator,密碼自己設置。系統沒有默認密碼。用戶可以設置自己的用戶名和密碼,如下所示:1.打開電腦,點擊左下角的開始按鈕。2.然后點擊控制面板按鈕進入。3.進入控制面板后,點擊用戶賬號按鈕進入。4.然后點擊創建密碼按鈕進入。5.只需輸入您想要的密碼。windows xp開機顯示Administrator,怎么辦?這種情況很特...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>