⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filesplitterfetch.java

📁 用java实现的断点续传源代码
💻 JAVA
字号:
/*   
  **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   +=   fileAccessI.write(b,0,nRead);   
  //if(nThreadID   ==   1)   
  //   Utility.log("nStartPos   =   "   +   nStartPos   +   ",   nEndPos   =   "   +   nEndPos);   
  }   
    
    
  Utility.log("Thread   "   +   nThreadID   +   "   is   over!");   
  bDownOver   =   true;   
  //nPos   =   fileAccessI.write   (b,0,nRead);   
  }   
  catch(Exception   e){e.printStackTrace   ();}   
  }   
  }   
    
    
  //打印回应的头信息   
  public   void   logResponseHead(HttpURLConnection   con)   
  {   
  for(int   i=1;;i++)   
  {   
  String   header=con.getHeaderFieldKey(i);   
  if(header!=null)   
  //responseHeaders.put(header,httpConnection.getHeaderField(header));   
  Utility.log(header+"   :   "+con.getHeaderField(header));   
  else   
  break;   
  }   
  }   
    
    
  public   void   splitterStop()   
  {   
  bStop   =   true;   
  }   
    
    
  }   
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -