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

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

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

代碼非常簡(jiǎn)單實(shí)用,這里就不多廢話了,直接奉上源碼

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;
  // 用于標(biāo)識(shí)當(dāng)前線程是否下載完成
  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è)置當(dāng)前線程下載的起點(diǎn),終點(diǎn)
      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 對(duì)文件進(jìn)行隨機(jī)讀寫(xiě)操作
      fos = new RandomAccessFile(file, "rw");
      // 設(shè)置開(kāi)始寫(xiě)文件的位置
      fos.seek(startPosition);
      bis = new BufferedInputStream(con.getInputStream());
      // 開(kāi)始循環(huán)以流的形式讀寫(xiě)文件
      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;
  }
 
}

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

相關(guān)文章

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

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

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

    Java 實(shí)現(xiàn)對(duì)稱加密算法

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

    SpringMVC中處理Ajax請(qǐng)求的示例

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

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

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

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

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

    Java無(wú)限級(jí)樹(shù)(遞歸)超實(shí)用案例

    下面小編就為大家?guī)?lái)一篇Java無(wú)限級(jí)樹(shù)(遞歸)超實(shí)用案例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11
  • 重新認(rèn)識(shí)Java中的ThreadLocal

    重新認(rèn)識(shí)Java中的ThreadLocal

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

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

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

    SpringBoot返回所有接口詳細(xì)信息的方法詳解

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

    Java FileDescriptor總結(jié)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    FileDescriptor 是“文件描述符”??梢员挥脕?lái)表示開(kāi)放文件、開(kāi)放套接字等。接下來(lái)通過(guò)本文給大家分享Java FileDescriptor總結(jié),感興趣的朋友一起學(xué)習(xí)吧
    2017-05-05

最新評(píng)論

边坝县| 锦州市| 惠州市| 陈巴尔虎旗| 扶沟县| 凤冈县| 嘉义县| 靖宇县| 石城县| 阿拉尔市| 旬邑县| 金昌市| 门源| 竹北市| 周宁县| 黄浦区| 琼结县| 阳朔县| 海淀区| 涟水县| 礼泉县| 太仓市| 大丰市| 维西| 乃东县| 栖霞市| 高安市| 江西省| 普安县| 德化县| 玉门市| 张掖市| 龙里县| 肥东县| 桃园县| 扎兰屯市| 长春市| 奇台县| 纳雍县| 新绛县| 利川市|