亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

http斷點續傳簡單實現

2019-11-18 12:09:03
字體:
來源:轉載
供稿:網友

   /*
  **SiteFileFetch.java
  */
  package NetFox;
  import java.io.*;
  import java.net.*;
  
  
  public class SiteFileFetch extends Thread {
  
  
  SiteInfoBean siteInfoBean = null; //文件信息Bean
  long[] nStartPos; //開始位置
  long[] nEndPos; //結束位置
  FileSplitterFetch[] fileSplitterFetch; //子線程對象
  long nFileLength; //文件長度
  boolean bFirst = true; //是否第一次取文件
  boolean bStop = false; //停止標志
  File tmpFile; //文件下載的臨時信息
  DataOutputStream output; //輸出到文件的輸出流
  
  //負責整個文件的抓取,控制內部線程(FileSplitterFetch類)
  public SiteFileFetch(SiteInfoBean bean) throws IOException
  {
  siteInfoBean = bean;
  //tmpFile = File.createTempFile ("zhong","1111",new File(bean.getSFilePath()));
  tmpFile = new File(bean.getSFilePath()+File.separator + bean.getSFileName()+".info");
  if(tmpFile.exists ())
  {
  bFirst = false;
  read_nPos();
  }
  else
  {
  nStartPos = new long[bean.getNSplitter()];
  nEndPos = new long[bean.getNSplitter()];
  }
  
  
  
  }
  
  
  public void run()
  {
  //獲得文件長度
  //分割文件
  //實例FileSplitterFetch
  //啟動FileSplitterFetch線程
  //等待子線程返回
  try{
  if(bFirst)
  {
  nFileLength = getFileSize();
  if(nFileLength == -1)
  {
  System.err.  }
  else if(nFileLength == -2)
  {
  System.err.println("File is not
access!");
  }
  else
  {
  for(int i=0;i<nStartPos.length;i++)
  {
  nStartPos[i] = (long)(i*(nFileLength/nStartPos.length));
  }
  for(int i=0;i<nEndPos.length-1;i++)
  {
  nEndPos[i] = nStartPos[i+1];
  }
  nEndPos[nEndPos.length-1] = nFileLength;
  }
  }
  
  
  //啟動子線程
  fileSplitterFetch = new FileSplitterFetch[nStartPos.length];
  for(int i=0;i<nStartPos.length;i++)
  {
  fileSplitterFetch[i] = new FileSplitterFetch(siteInfoBean.getSSiteURL(),
  siteInfoBean.getSFilePath() + File.separator + siteInfoBean.getSFileName(),
  nStartPos[i],nEndPos[i],i);
  Utility.log("Thread " + i + " , nStartPos = " + nStartPos[i] + ", nEndPos = " + nEndPos[i]);
  fileSplitterFetch[i].start();
  }
  // fileSplitterFetch[nPos.length-1] = new FileSplitterFetch(siteInfoBean.getSSiteURL(),
  siteInfoBean.getSFilePath() + File.separator + siteInfoBean.getSFileName(),nPos[nPos.length-1],nFileLength,nPos.length-1);
  // Utility.log("Thread " + (nPos.length-1) + " , nStartPos = " + nPos[nPos.length-1] + ",
  nEndPos = " + nFileLength);
  // fileSplitterFetch[nPos.length-1].start();
  
  
  //等待子線程結束
  //int count = 0;
  //是否結束while循環
  boolean breakWhile = false;
  
  
  while(!bStop)
  {
  write_nPos();
  Utility.sleep(500);
  breakWhile = true;
  
  
  for(int i=0;i<nStartPos.length;i++)
  {
  if(!fileSplitterFetch[i].bDownOver)
  {
  breakWhile = false;
  break;
  }
  }
  if(breakWhile)
  break;
  
  
  //count++;
  //if(count>4)
  // siteStop();
  }
  
  
  System.err.println("文件下載結束!");
  }
  catch(Exception e){e.printStackTrace ();}
  }
  
  
  //獲得文件長度
  public long getFileSize()
  {
  int nFileLength = -1;
  try{
  URL url = new URL(siteInfoBean.getSSiteURL());
  HttpURLConnection httpConnection = (HttpURLConnection)url.openConnection ();
  httpConnection.setRequestProperty("User-Agent","NetFox");
  
  
  int responseCode=httpConnection.getResponseCode();
  if(responseCode>=400)
  {
  processErrorCode(responseCode);
  return -2; //-2 represent access is error
  }
  
  
  String sHeader;
  
  
  for(int i=1;;i++)
  {
  //DataInputStream in = new DataInputStream(httpConnection.getInputStream ());
  //Utility.log(in.readLine());
  sHeader=httpConnection.getHeaderFieldKey(i);
  if(sHeader!=null)
  {
  if(sHeader.equals("Content-Length"))
  {
  nFileLength = Integer.parseInt(httpConnection.getHeaderField(sHeader));
  break;
  }
  }
  else
  break;
  }
  }
  catch(IOException e){e.printStackTrace ();}
  catch(Exception e){e.printStackTrace ();}
  
  
  Utility.log(nFileLength);
  
  
  return nFileLength;
  }
  
  
  //保存下載信息(文件指針位置)
  private void write_nPos()
  {
  try{
  output = new DataOutputStream(new FileOutputStream(tmpFile));
  output.writeInt(nStartPos.length);
  for(int i=0;i<nStartPos.length;i++)
  {
  // output.writeLong(nPos[i]);
  output.writeLong(fileSplitterFetch[i].nStartPos);
  output.writeLong(fileSplitterFetch[i].nEndPos);
  }
  output.close();
  }
  catch(IOException e){e.printStackTrace ();}
  catch(Exception e){e.printStackTrace ();}
  }
  
  
  //讀取保存的下載信息(文件指針位置)
  private void read_nPos()
  {
  try{
  DataInputStream input = new DataInputStream(new FileInputStream(tmpFile));
  int nCount = input.readInt();
  nStartPos = new long[nCount];
  nEndPos = new long[nCount];
  for(int i=0;i<nStartPos.length;i++)
  {
  nStartPos[i] = input.readLong();
  nEndPos[i] = input.readLong();
  }
  input.close();
  }
  catch(IOException e){e.printStackTrace ();}
  catch(Exception e){e.printStackTrace ();}
  }
  
  
  private void processErrorCode(int nErrorCode)
  {
  System.err.println("Error Code : " + nErrorCode);
  }
  
  
  //停止文件下載
  public void siteStop()
  {
  bStop = true;
  for(int i=0;i<nStartPos.length;i++)
  fileSplitterFetch[i].splitterStop();
  
  
  }
  }
  //負責部分文件的抓取
  **FileSplitterFetch.java
  */
  package NetFox;
  
  
  import java.io.*;
  import java.net.*;
  
  
  public class FileSplitterFetch extends Thread {
  
  
  String sURL; //File URL
  long nStartPos; //File Snippet Start Position
  long nEndPos; //File Snippet End Position
  int nThreadID; //Thread's ID
  boolean bDownOver = false; //Downing is over
  boolean bStop = false; //Stop identical
  FileAccessI fileAccessI = null; //File Access interface
  
  
  public FileSplitterFetch(String sURL,String sName,long nStart,long nEnd,int id) throws IOException
  {
  this.sURL = sURL;
  this.nStartPos = nStart;
  this.nEndPos = nEnd;
  nThreadID = id;
  fileAccessI = new FileAccessI(sName,nStartPos);//定位
  }
  
  
  public void run()
  {
  while(nStartPos < nEndPos && !bStop)
  {
  
  
  try{
  URL url = new URL(sURL);
  HttpURLConnection httpConnection = (HttpURLConnection)url.openConnection ();
  httpConnection.setRequestProperty("User-Agent","NetFox");
  String sProperty = "bytes="+nStartPos+"-";
  httpConnection.setRequestProperty("RANGE",sProperty);
  Utility.log(sProperty);
  
  
  InputStream input = httpConnection.getInputStream();
  //logResponseHead(httpConnection);
  
  
  byte[] b = new byte[1024];
  int nRead;
  while((nRead=input.read(b,0,1024)) > 0 && nStartPos < nEndPos && !bStop)
  {
  nStartPos += fileAcces

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频专区| 91在线播放国产| 红桃av永久久久| 日韩欧美在线视频| 亚洲免费一在线| 国产精品香蕉在线观看| 91精品久久久久久久久久入口| 亚洲图片欧美日产| 国产一区二区三区视频| 欧美高清视频一区二区| 亚洲自拍小视频免费观看| 一本色道久久88亚洲综合88| 最近2019中文字幕大全第二页| 成人春色激情网| 97高清免费视频| 97在线视频免费| 欧美中文字幕视频| 欧美国产日韩一区二区| 亚洲精品视频免费在线观看| 成人欧美一区二区三区黑人孕妇| 亚洲www在线观看| 日韩免费av一区二区| 国产在线98福利播放视频| 亚洲毛茸茸少妇高潮呻吟| 亚洲精品国产成人| 91精品视频网站| 91亚洲人电影| 超碰日本道色综合久久综合| 日韩欧亚中文在线| 国产精品黄色影片导航在线观看| 欧美国产在线电影| 中文字幕国产日韩| 久久精品小视频| 成人激情电影一区二区| 国产精品电影网| 欧美日韩亚洲一区二区三区| 91精品国产91久久久久久最新| 成人欧美一区二区三区在线湿哒哒| 欧美一级视频在线观看| 欧洲精品在线视频| 久久九九国产精品怡红院| 亚洲精品欧美一区二区三区| 欧美第一淫aaasss性| 日本电影亚洲天堂| 国产日韩欧美综合| 草民午夜欧美限制a级福利片| 日韩精品一区二区视频| 日韩av免费看| 亚洲欧美成人精品| 中文日韩在线视频| 18一19gay欧美视频网站| 亚洲国产精品视频在线观看| 亚洲国产精品系列| 国产成人高潮免费观看精品| 欧美电影在线免费观看网站| 亚洲激情在线观看| 精品调教chinesegay| 亚洲毛片在线观看| 奇米影视亚洲狠狠色| 国产免费一区视频观看免费| xxxxxxxxx欧美| 欧美性猛交xxxx富婆弯腰| 日本在线精品视频| 最新国产成人av网站网址麻豆| 亚洲综合一区二区不卡| 日日骚av一区| 久久久久久久成人| 欧美日韩中文在线| 亚洲电影中文字幕| 久久精品在线视频| 日韩av黄色在线观看| 成人黄色av网| 亚洲毛茸茸少妇高潮呻吟| 热久久免费国产视频| 色偷偷噜噜噜亚洲男人| 日韩综合视频在线观看| 日韩一区二区三区在线播放| 欧美色道久久88综合亚洲精品| 国产亚洲日本欧美韩国| 亚洲网站视频福利| 国产欧美一区二区三区在线看| 欧美激情精品久久久久久免费印度| 欧美另类69精品久久久久9999| 久久韩剧网电视剧| 国产精品免费一区| 亚洲欧美日韩精品久久亚洲区| 日韩美女av在线免费观看| 欧美日在线观看| 国产成人小视频在线观看| 久久久久久久激情视频| 国产亚洲视频中文字幕视频| 欧美精品在线视频观看| 日韩在线欧美在线国产在线| 精品国产乱码久久久久久婷婷| 国产一区二区三区在线视频| 日本久久亚洲电影| 成人在线国产精品| 欧美—级a级欧美特级ar全黄| 国内精品免费午夜毛片| 97超级碰在线看视频免费在线看| 色樱桃影院亚洲精品影院| 中文字幕精品在线| 国产99久久精品一区二区| 久久精品最新地址| 日韩精品中文字幕在线| 69久久夜色精品国产7777| 亚洲日本中文字幕免费在线不卡| 亚洲国产成人精品一区二区| 国产精品自产拍在线观看中文| 国产精品wwwwww| 欧美色欧美亚洲高清在线视频| 欧美一级大片在线免费观看| 久久夜色精品国产欧美乱| 91精品视频免费观看| 亚洲石原莉奈一区二区在线观看| 免费91在线视频| 精品国产一区二区三区久久| 91探花福利精品国产自产在线| 日本精品性网站在线观看| 色中色综合影院手机版在线观看| 91久久精品国产91性色| 久久久久久久久久国产| 亚洲aa在线观看| 欧美高跟鞋交xxxxhd| 国产综合色香蕉精品| 精品日韩中文字幕| 毛片精品免费在线观看| 久久久久久久香蕉网| 精品国内亚洲在观看18黄| 成人激情视频在线播放| 国产成人精品优优av| 性欧美xxxx视频在线观看| 中文字幕少妇一区二区三区| 欧美电影在线免费观看网站| 久久天天躁狠狠躁老女人| 大胆人体色综合| 欧美性少妇18aaaa视频| 日韩精品中文字幕有码专区| 欧美高清激情视频| 日本精品va在线观看| 97色在线观看| 国产精品极品美女粉嫩高清在线| 大伊人狠狠躁夜夜躁av一区| 久久国产一区二区三区| 国产国语刺激对白av不卡| 夜夜嗨av色综合久久久综合网| 中文字幕日韩在线观看| 欧美日本高清一区| 久久精品夜夜夜夜夜久久| 亚洲男人天堂手机在线| 韩国精品美女www爽爽爽视频| 国产在线精品一区免费香蕉| 日本精品一区二区三区在线播放视频| 亚洲精品中文字幕女同| 久久久av免费| 欧美成年人视频| 68精品久久久久久欧美| 亚洲国产欧美一区二区三区久久| 亚洲国产精品系列| 亚洲视频在线播放| 欧美日韩亚洲一区二| 欧美特黄级在线| 日韩欧美亚洲范冰冰与中字| 精品国产一区二区三区久久狼5月|