Android实现多线程下载文件的方法

2019-12-10 19:58:34王冬梅
  • while (curPosition < endPosition) {  int len = bis.read(buf, 0, BUFFER_SIZE); 
  • if (len == -1) {  break; 
  • }  fos.write(buf, 0, len); 
  • curPosition = curPosition + len;  if (curPosition > endPosition) { 
  • downloadSize+=len - (curPosition - endPosition) + 1;  } else { 
  • downloadSize+=len;  } 
  • }  //下载完成设为true 
  • this.finished = true;  bis.close(); 
  • fos.close();  } catch (IOException e) { 
  • e.printStackTrace();  } 
  • }  public boolean isFinished(){return finished;} 
  • public int getDownloadSize() {return downloadSize;}  } 

    这里通过RandomAccessFile 的seek方法定位到相应的位置 并实时记录下载量

    当然这里需要联网和访问SD卡 所以要加上相应的权限

     

      
    1. <uses-permission android:name="android.permission.INTERNET" />   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>  
    2. <uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>