亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? httpdownload.java

?? 電子工業出版社的<Java案例開發集錦>一書源代碼
?? JAVA
字號:
package download;import javax.swing.UIManager;import java.awt.*;import java.io.DataOutputStream;import java.net.HttpURLConnection;import java.io.IOException;import java.io.FileInputStream;import java.net.URL;import java.io.File;import java.io.DataInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.Serializable;import java.io.RandomAccessFile;//Java實現網絡文件傳輸,在客戶端請求Web服務器傳輸指定文件,并將文件保存。public class HttpDownload {  private String sWebAddr = "http://kent.dl.sourceforge.net/sourceforge/jamper/Sample.zip"; // 定義Web地址和文件名  // 例如,傳輸http://cs.bnu.edu.cn/source/vb/地址的vb.zip 則 sWebAddr = "http://cs.bnu.edu.cn/source/vb/vb.zip"  private String sSavePath = "d:\\temp";            // 定義存文件路徑  private String sSaveName = "sample.zip";         // 定義文件名  public HttpDownload(){    try{      CacthInfo bean = new CacthInfo(sWebAddr,sSavePath,sSaveName,5);      CacthFile fileFetch = new CacthFile(bean);      fileFetch.start();    }    catch(Exception e){      e.printStackTrace ();    }  }  public static void main(String[] args){    new HttpDownload();  }}class CacthFile extends Thread {   // 傳輸文件線程類  CacthInfo siteInfoBean = null; //文件信息Bean  long[] nPos;  long[] nStartPos; //開始位置  long[] nEndPos; //結束位置  PartCacth[] fileSplitterFetch; //子線程對象  long nFileLength; //文件長度  boolean bFirst = true; //是否第一次取文件  boolean bStop = false; //停止標志  File tmpFile; //文件傳輸臨時信息  DataOutputStream output; //輸出到文件的輸出流  public CacthFile(CacthInfo bean) throws IOException{    siteInfoBean = bean;    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(){    //獲得文件長度    //分割文件    //實例PartCacth    //啟動PartCacth線程    //等待子線程返回    try{      if(bFirst){        nFileLength = getFileSize();        if(nFileLength == -1){          System.err.println("File Length is not known!");        }        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 PartCacth[nStartPos.length];      for(int i=0;i<nStartPos.length;i++){        fileSplitterFetch[i] = new PartCacth(siteInfoBean.getSSiteURL(),        siteInfoBean.getSFilePath() + File.separator + siteInfoBean.getSFileName(),        nStartPos[i],nEndPos[i],i);        Addtion.log("Thread " + i + " , nStartPos = " + nStartPos[i] + ", nEndPos = " + nEndPos[i]);        fileSplitterFetch[i].start();      }      //等待子線程結束      //int count = 0;      //是否結束while循環      boolean breakWhile = false;      while(!bStop){        write_nPos();        Addtion.sleep(500);        breakWhile = true;        for(int i=0;i<nStartPos.length;i++){          if(!fileSplitterFetch[i].bDownOver){          breakWhile = false;          break;        }      }      if(breakWhile)        break;      }      System.out.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 為Web服務器響應錯誤      }      String sHeader;      for(int i=1;;i++){        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 ();}    Addtion.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();                //判斷每塊的文件開始位置是否大于結束位置            for(int i=0;i<nStartPos.length;i++){                if(nStartPos[i]>nEndPos[i]){                    nStartPos[i]=nEndPos[i];                }            }    }    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();  }}class CacthInfo {     // 定義獲取和設置相關文件信息類 private String sSiteURL;    // 定義URL變量 private String sFilePath; // 定義存文件路徑變量 private String sFileName; // 定義文件名變量 private int nSplitter; // 定義傳輸文件計數值 public CacthInfo(){   this("","","",5);     // 設置傳輸文件計數值 } public CacthInfo(String sURL,String sPath,String sName,int nSpiltter){   sSiteURL= sURL;   sFilePath = sPath;   sFileName = sName;   this.nSplitter = nSpiltter; } public String getSSiteURL(){   return sSiteURL; } public void setSSiteURL(String value){   sSiteURL = value; } public String getSFilePath(){   return sFilePath; } public void setSFilePath(String value){   sFilePath = value; } public String getSFileName(){   return sFileName; } public void setSFileName(String value){   sFileName = value; } public int getNSplitter(){   return nSplitter; } public void setNSplitter(int nCount){   nSplitter = nCount; }}class PartCacth extends Thread {  String sURL; // 定義文件傳輸時使用的變量  long nStartPos; // 分段文件傳輸開始位置  long nEndPos; // 分段文件傳輸結束位置  int nThreadID; // 子線程ID  boolean bDownOver = false; // 完成文件傳輸  boolean bStop = false; // 停止文件傳輸  StoreFile fileAccess = null;  public PartCacth(String sURL,String sName,long nStart,long nEnd,int id) throws IOException{    this.sURL = sURL;    this.nStartPos = nStart;    this.nEndPos = nEnd;    nThreadID = id;    fileAccess = new StoreFile(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);        Addtion.log(sProperty);        InputStream input = httpConnection.getInputStream();        byte[] b = new byte[1024];        int nRead;        while((nRead=iput.read(b,0,1024)) > 0 && nStartPos <nEndPos && !bStop){          nStartPos += fileAccess.write(b,0,nRead);        }        Addtion.log("Thread " + nThreadID + " is over!");        bDownOver = true;      }      catch(Exception e){        e.printStackTrace ();      }    }     bDownOver = true;  }  public void logResponseHead(HttpURLConnection con){    for(int i=1;;i++){      String header=con.getHeaderFieldKey(i);      if(header!=null)        Addtion.log(header+" : "+con.getHeaderField(header));      else        break;    }  }  public void splitterStop(){    bStop = true;  }}class StoreFile implements Serializable{    // 定義訪問文件類  RandomAccessFile oSavedFile;  long nPos;  public StoreFile() throws IOException{    this("",0);  }  public StoreFile(String sName,long nPos) throws IOException{    oSavedFile = new RandomAccessFile(sName,"rw");    this.nPos = nPos;    oSavedFile.seek(nPos);  }  public synchronized int write(byte[] b,int nStart,int nLen){    int n = -1;    try{      oSavedFile.write(b,nStart,nLen);      n = nLen;    }    catch(IOException e){      e.printStackTrace ();    }    return n;  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲制服丝袜av| 成人黄色大片在线观看| 顶级嫩模精品视频在线看| 欧美色国产精品| 亚洲国产成人午夜在线一区| 午夜成人在线视频| av在线不卡网| 久久夜色精品国产欧美乱极品| 玉米视频成人免费看| 韩国欧美国产1区| 777xxx欧美| 亚洲黄色片在线观看| 成人午夜av电影| 2014亚洲片线观看视频免费| 亚洲伊人伊色伊影伊综合网| 成人午夜视频在线观看| 欧美大片国产精品| 免费精品视频在线| 欧美老肥妇做.爰bbww视频| 亚洲欧洲精品成人久久奇米网| 狠狠色丁香婷综合久久| 欧美裸体一区二区三区| 一区二区三区四区视频精品免费 | 香蕉久久一区二区不卡无毒影院| 国产成人在线网站| 精品国产伦一区二区三区观看体验 | 国产剧情一区二区| 日韩欧美一级二级三级久久久 | 日韩一区在线免费观看| 国产精品白丝jk黑袜喷水| 日韩欧美亚洲国产精品字幕久久久| 亚洲成人一区在线| 欧美另类z0zxhd电影| 性欧美疯狂xxxxbbbb| 欧美日韩三级一区二区| 亚洲国产精品久久人人爱蜜臀| 日本韩国欧美三级| 亚洲一区二区成人在线观看| 欧美午夜片在线看| 日日夜夜精品视频免费| 欧美一区二区精美| 国产一区二区在线视频| 久久久噜噜噜久久中文字幕色伊伊 | 日韩国产一区二| 欧美日本一区二区三区四区| 日韩精品亚洲一区| 欧美成人在线直播| 国产大片一区二区| 亚洲图片激情小说| 欧美色男人天堂| 国内精品在线播放| 国产精品久久久久久久久免费丝袜| 国产·精品毛片| 亚洲视频在线观看三级| 欧美综合欧美视频| 精品一区二区综合| 中文乱码免费一区二区| 日本久久电影网| 欧美aa在线视频| 2020日本不卡一区二区视频| 99精品一区二区三区| 日韩高清不卡一区二区三区| 久久久精品国产免大香伊| 色综合久久66| 狠狠色综合日日| 亚洲精品乱码久久久久| 日韩欧美国产精品一区| 99久久久国产精品免费蜜臀| 午夜影院在线观看欧美| 久久九九久精品国产免费直播| 91在线免费看| 免费高清在线视频一区·| 亚洲国产精华液网站w| 欧美日韩免费一区二区三区视频| 国产一区视频在线看| 亚洲综合图片区| 久久精品无码一区二区三区| 欧美自拍丝袜亚洲| 懂色中文一区二区在线播放| 日韩精品一二区| 国产精品成人免费精品自在线观看 | 精品久久人人做人人爽| 91久久奴性调教| 国产精品一品二品| 午夜视频在线观看一区| 中文字幕二三区不卡| 日韩一区二区三区在线观看| 色综合天天综合网国产成人综合天 | 三级精品在线观看| 国产精品毛片大码女人| 精品久久一二三区| 欧美日韩一区在线观看| av午夜精品一区二区三区| 精品中文字幕一区二区| 图片区小说区国产精品视频| 国产精品国产三级国产aⅴ原创 | 老汉av免费一区二区三区| 亚洲黄网站在线观看| 欧美国产日韩精品免费观看| 精品国产第一区二区三区观看体验 | 日韩欧美一二区| 在线电影国产精品| 日本高清不卡一区| 99久久夜色精品国产网站| 大胆亚洲人体视频| 国产成人综合精品三级| 国产一区二区三区不卡在线观看| 婷婷中文字幕一区三区| 亚洲二区在线观看| 亚洲一区二区三区免费视频| 亚洲男女一区二区三区| 亚洲欧美国产三级| 亚洲综合免费观看高清完整版 | 99久久久免费精品国产一区二区 | 在线观看亚洲一区| 色哟哟国产精品| 色噜噜久久综合| 色婷婷精品久久二区二区蜜臀av| av一本久道久久综合久久鬼色| 成人黄色片在线观看| av午夜精品一区二区三区| 99riav一区二区三区| 91免费国产在线观看| 91官网在线免费观看| 欧美日韩在线不卡| 欧美一区午夜视频在线观看| 欧美一区二区三区日韩视频| 7777精品久久久大香线蕉| 欧美精品久久一区二区三区| 欧美精品在线视频| 精品少妇一区二区三区在线播放| 欧美电影免费观看高清完整版在线| 日韩视频一区在线观看| 精品sm在线观看| 国产精品你懂的| 一区二区成人在线观看| 奇米影视7777精品一区二区| 国产 日韩 欧美大片| 日本精品一级二级| 日韩欧美国产精品| 1000部国产精品成人观看| 亚洲大片精品永久免费| 激情图片小说一区| 91捆绑美女网站| 欧美一区午夜视频在线观看| 国产无一区二区| 亚洲自拍偷拍av| 激情欧美一区二区| 欧洲精品在线观看| 26uuu欧美日本| 亚洲一区二区三区在线播放| 黄色日韩三级电影| 欧美日韩在线免费视频| 国产日产欧产精品推荐色| 亚洲国产成人91porn| 国产一区二区精品久久99| 在线国产电影不卡| 国产午夜精品理论片a级大结局| 亚洲一区在线电影| 韩国三级在线一区| 日本乱码高清不卡字幕| 日韩午夜电影av| 欧美精品色综合| 国产精品久久久久久久久久免费看| 一区二区免费视频| 久久99精品国产91久久来源| 欧美中文字幕一区二区三区亚洲| 欧美精品电影在线播放| 国产精品午夜免费| 亚洲chinese男男1069| 波多野结衣欧美| 91精品国产丝袜白色高跟鞋| 日本一区二区免费在线 | 国产一区二区三区国产| 在线观看亚洲专区| 国产无一区二区| 性欧美大战久久久久久久久| 国产91精品入口| 久久久另类综合| 爽好久久久欧美精品| 99久久久久久| 日韩精品一区二| 亚洲自拍欧美精品| 成人av电影免费观看| 91电影在线观看| 1024成人网| 福利视频网站一区二区三区| 91精品国产一区二区| 日本中文字幕一区二区有限公司| av电影在线观看一区| 日韩视频中午一区| 一区二区三区在线视频观看| 91免费观看国产| 国产丝袜欧美中文另类| 日韩成人免费电影| 欧美一卡2卡三卡4卡5免费| 一区二区三区四区激情| 国产成人鲁色资源国产91色综| 欧美日韩免费观看一区三区| 一区二区在线观看免费视频播放|