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

java實現(xiàn)適用于安卓的文件下載線程類

 更新時間:2015年07月24日 11:39:00   投稿:hebedich  
本文給大家分享的是java實現(xiàn)適用于安卓的文件下載線程類的代碼,有需要的小伙伴可以參考下

代碼非常簡單實用,這里就不多廢話了,直接奉上源碼

package android.mooc.tools;
 
import java.io.BufferedInputStream;
import java.io.File;
import java.io.RandomAccessFile;
import java.net.URL;
import java.net.URLConnection;
 
import android.util.Log;
 
public class FileDownloadThread extends Thread {
  private static final int BUFFER_SIZE = 1024;
  private URL url;
  private File file;
  private int startPosition;
  private int endPosition;
  private int curPosition;
  // 用于標識當前線程是否下載完成
  private boolean finished = false;
  private int downloadSize;
  private boolean state;
 
  boolean destory;
 
  public boolean isDestory() {
    return destory;
  }
 
  public void setDestory(boolean destory) {
    this.destory = destory;
  }
 
  public FileDownloadThread(URL url, File file, int startPosition, int endPosition) {
    this.url = url;
    this.file = file;
    this.startPosition = startPosition;
    this.curPosition = startPosition;
    this.endPosition = endPosition;
    this.downloadSize = 0;
  }
 
  @Override
  public void run() {
    destory = false;
    state = true;
    BufferedInputStream bis = null;
    RandomAccessFile fos = null;
    byte[] buf = new byte[BUFFER_SIZE];
    URLConnection con = null;
    try {
      con = url.openConnection();
      con.setAllowUserInteraction(true);
      // 設(shè)置當前線程下載的起點,終點
      con.setRequestProperty("Range", "bytes=" + startPosition + "-" + endPosition);
      con.setRequestProperty("accept", "*/*");
      con.setRequestProperty("connection", "Keep-Alive");
      con.setRequestProperty("Accept-Language", "zh-CN");
      con.setRequestProperty("Charset", "UTF-8");
      con.setRequestProperty("User-Agent",
          "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322;"
              + " .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)");
 
      // 使用java中的RandomAccessFile 對文件進行隨機讀寫操作
      fos = new RandomAccessFile(file, "rw");
      // 設(shè)置開始寫文件的位置
      fos.seek(startPosition);
      bis = new BufferedInputStream(con.getInputStream());
      // 開始循環(huán)以流的形式讀寫文件
      while ((curPosition < endPosition) && (!destory)) {
        while (state == false) {
          sleep(2000);
        }
        int len = bis.read(buf, 0, BUFFER_SIZE);
        if (len != -1) {
          fos.write(buf, 0, len);
          curPosition = curPosition + len;
          if (curPosition > endPosition) {
            downloadSize += len - (curPosition - endPosition);
          } else {
            downloadSize += len;
          }
        }
        Log.i("333", "run" + " len=" + len);
      }
      // 下載完成設(shè)為true
      this.finished = true;
      bis.close();
      fos.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
 
  public boolean isState() {
    return state;
  }
 
  public void setState(boolean state) {
    this.state = state;
 
  }
 
  public boolean isFinished() {
    return finished;
  }
 
  public int getDownloadSize() {
    return downloadSize;
  }
 
  public void setDownloadSize(int downloadSize) {
    this.downloadSize = downloadSize;
  }
 
}

以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • Java?Scanner?類讀取一維數(shù)組二維數(shù)組示例詳解

    Java?Scanner?類讀取一維數(shù)組二維數(shù)組示例詳解

    這篇文章主要為大家介紹了Java?Scanner?類讀取一維數(shù)組二維數(shù)組示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Java 實現(xiàn)對稱加密算法

    Java 實現(xiàn)對稱加密算法

    這篇文章主要介紹了Java 實現(xiàn)對稱加密算法的相關(guān)資料,幫助大家更好的理解和學習Java,感興趣的朋友可以了解下
    2020-11-11
  • SpringMVC中處理Ajax請求的示例

    SpringMVC中處理Ajax請求的示例

    本篇文章給大家介紹SpringMVC中處理Ajax請求的示例,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • springboot集成Mybatis-plus-join-boot-start詳解

    springboot集成Mybatis-plus-join-boot-start詳解

    這篇文章主要介紹了springboot集成Mybatis-plus-join-boot-start方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • java從mysql導出數(shù)據(jù)的具體實例

    java從mysql導出數(shù)據(jù)的具體實例

    這篇文章主要介紹了java從mysql導出數(shù)據(jù)的具體實例,有需要的朋友可以參考一下
    2013-12-12
  • Java無限級樹(遞歸)超實用案例

    Java無限級樹(遞歸)超實用案例

    下面小編就為大家?guī)硪黄狫ava無限級樹(遞歸)超實用案例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • 重新認識Java中的ThreadLocal

    重新認識Java中的ThreadLocal

    ThreadLocal是JDK包提供的,它提供線程本地變量,如果創(chuàng)建一個ThreadLocal變量,那么訪問這個變量的每個線程都會有這個變量的一個副本,在實際多線程操作的時候,操作的是自己本地內(nèi)存中的變量,從而規(guī)避了線程安全問題
    2021-05-05
  • 五分鐘解鎖springboot admin監(jiān)控新技巧

    五分鐘解鎖springboot admin監(jiān)控新技巧

    本文不會講如何搭建企業(yè)的運維監(jiān)控系統(tǒng),有興趣的可以去找找成熟的比如Zabbix、Prometheus,甚至比較簡單的Wgcloud都能滿足一定的需求,不在此贅述。本文講解如何使用Springboot admin對spring boot項目進行應用監(jiān)控,感興趣的朋友一起看看吧
    2021-06-06
  • SpringBoot返回所有接口詳細信息的方法詳解

    SpringBoot返回所有接口詳細信息的方法詳解

    這篇文章主要介紹了SpringBoot返回所有接口詳細信息的方法,簡單來說就是我們通過訪問一個接口能看到我們所有的API接口的數(shù)量,以及路徑和請求方法,文中有詳細的代碼供大家參考,需要的朋友可以參考下
    2025-04-04
  • Java FileDescriptor總結(jié)_動力節(jié)點Java學院整理

    Java FileDescriptor總結(jié)_動力節(jié)點Java學院整理

    FileDescriptor 是“文件描述符”??梢员挥脕肀硎鹃_放文件、開放套接字等。接下來通過本文給大家分享Java FileDescriptor總結(jié),感興趣的朋友一起學習吧
    2017-05-05

最新評論

苏尼特右旗| 天峨县| 封丘县| 阜宁县| 赤城县| 滁州市| 凤翔县| 永安市| 黔江区| 时尚| 五河县| 栾城县| 塔城市| 峡江县| 嵩明县| 五莲县| 微山县| 宜春市| 湖口县| 永修县| 横峰县| 南昌县| 雅安市| 宁晋县| 深州市| 连南| 张家口市| 罗山县| 永清县| 香格里拉县| 施甸县| 甘肃省| 双桥区| 盐亭县| 曲麻莱县| 霍州市| 夹江县| 淮南市| 乌鲁木齐县| 尖扎县| 六盘水市|