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

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

?? dlframe.java

?? 創建一個名為try.rar的文件
?? JAVA
字號:
package MTdownload;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;

public class DLFrame extends JFrame{
	private JPanel contentPane;
	private TextField textField1 = new TextField();//輸入url和端口
	private TextField textField2 = new TextField();//輸入保存路徑
	private Button button = new Button();//啟動下載活動的按鈕
	private Label label1 = new Label();//提示輸入下載的url
	private Label label2 = new Label();//提示輸入保存路徑和文件名
    private TextArea textArea = new TextArea();//輸出用戶交互的提示信息
	private String dlURL = new String();//要下載的目標文件的完整url
	private String saveFileAs = new String();//文件保存的路徑和名稱
	
	public DLFrame() {
		enableEvents(AWTEvent.WINDOW_EVENT_MASK);
		try{
			toInit();	
		}
		catch(Exception e){
			e.printStackTrace();
		}
	}
	
	private void toInit() throws Exception{//初始化窗體
		contentPane = (JPanel) this.getContentPane();
		contentPane.setLayout(null);
		this.setSize(new Dimension(380,320));
		this.setTitle("多線程下載");
		textField1.setBounds(new Rectangle(150,200,200,20));
		textField1.setText("http://localhost:8080/try.rar");
		textField2.setBounds(new Rectangle(150,240,150,20));
		textField2.setText("f:\\temp\\try.rar");
		label1.setBounds(new Rectangle(20,200,120,20));
		label1.setText("下載的目標文件為:");
		label2.setBounds(new Rectangle(20,240,120,20));
		label2.setText("下載的文件另存為:");
		button.setBounds(new Rectangle(310,240,40,20));
		button.setLabel("下載");
		button.addActionListener(new java.awt.event.ActionListener() {
      		public void actionPerformed(ActionEvent ee) {
        		button_actionPerformed(ee);
      		}
    	});
    	textArea.setBounds(new Rectangle(20,20,330,170));
    	textArea.setEditable(false);
    	contentPane.add(textField1,null);
    	contentPane.add(textField2,null);
    	contentPane.add(label1,null);
    	contentPane.add(label2,null);
    	contentPane.add(button,null);
    	contentPane.add(textArea,null);
    	
    	dlURL = "http://localhost:8080/try.rar";//默認的下載目標
    	saveFileAs = "f:\\temp\\rar.zip";//默認的存儲位置和名字
	}
	
	protected void processWindowEvent(WindowEvent e){
		super.processWindowEvent(e);
		if (e.getID() == WindowEvent.WINDOW_CLOSING){
			System.exit(0);	
		}	
	}
	
	void button_actionPerformed(ActionEvent ee){//啟動下載文件的主線程
		try{
			dlURL = textField1.getText();
			saveFileAs = textField2.getText();
			if(dlURL.compareTo("") == 0 && saveFileAs.compareTo("") == 0 ) {
				textArea.setText("請輸入要下載的文件和保存文件完整地址\n然后點擊下載鍵重新下載");
			}
			else{
				DownFile fileFetch = new DownFile(dlURL,saveFileAs,5,textArea);
				fileFetch.start();	
				textArea.append("\n主線程啟動....");
			}
		}
		catch(Exception e){
			e.printStackTrace ();
			textArea.append("\nError0:" + e);	
		}
	}
}


class DownFileSplitter extends Thread {
  String dlURL; 										// 定義文件傳輸時服務器的URL
  long startPos; 									// 分段的開始位置
  long endPos; 									// 分段的結束位置
  int threadID; 									// 子線程ID
  TextArea textArea = new TextArea();
  boolean done = false;						 // 文件傳輸完成
  boolean stop = false; 							// 文件傳輸被終止
  RandomAccessFile file;

  public DownFileSplitter(String dlURL,String saveAs,long nStart,long nEnd,int id,TextArea textArea) throws IOException{
    this.dlURL = dlURL;
    this.startPos = nStart;
    this.endPos = nEnd;
    threadID = id;
	this.textArea = textArea;
    file = new RandomAccessFile(saveAs,"rw");
    file.seek(startPos);
  }

  public void run(){
    while(startPos < endPos && !stop){
      try{
        URL url = new URL(dlURL);
        HttpURLConnection httpConnection = (HttpURLConnection)url.openConnection ();
        String sProperty = "bytes="+startPos+"-";
        httpConnection.setRequestProperty("RANGE",sProperty);//請求傳輸的開始位置
        System.out.println("線程" + threadID + " 下載文件......請等待" );
        textArea.append("\n線程" + threadID + "下載文件......請等待");
        InputStream input = httpConnection.getInputStream();
        byte[] b = new byte[1024];
        int offset;
        offset = (int)endPos - (int)startPos;
        if(offset>1024) offset = 1024;
        while(input.read(b,0,offset)> 0 && startPos < endPos && !stop){
          offset = (int)endPos - (int)startPos;
          if(offset>1024) offset = 1024;
          System.out.println("started " + startPos + " offset: " + offset);
          file.write(b,0,offset);
          startPos += offset;//下一次開始寫的位置
        }
        System.out.println("線程 " + threadID + " 下載完畢!!");
        done = true;
        textArea.append("\n線程" + threadID + " 下載完畢!");
        file.close();
      }
      catch(Exception e){
        e.printStackTrace ();
      }
    }
  }

  public void splitterStop(){
    stop = true;
  }
}


class DownFile extends Thread {   // 傳輸文件線程類
  String dlURL;
  String saveFileAs;
  int nthread;
  String info = new String();
  TextArea textArea = new TextArea();
  
  long[] position;
  long[] startPos; //開始位置
  long[] endPos; //結束位置
  DownFileSplitter[] downFileSplitter; //子線程對象
  long fileLength; //文件長度
  boolean stop = false; //停止標志
  DataOutputStream output; //輸出到文件的輸出流

  public DownFile(String sURL,String saveFileAs,int nthread,TextArea textArea) throws IOException{
    this.dlURL = sURL;
    this.saveFileAs = saveFileAs;
    this.nthread = nthread;
    this.textArea = textArea;

    startPos = new long[nthread];//各個線程的開始位置
    endPos = new long[nthread];//各個線程的結束位置
  }

  public void run(){
    info = "目標文件: " + dlURL;
    System.out.println(info);
    textArea.append("\n" + info);
    info = "文件存為: " + saveFileAs;
    System.out.println(info);    
    textArea.append("\n" + info);
    info = "\n線程總數: " + nthread;
    System.out.println(info);
    textArea.append("\n" + info);
    
    try{
        fileLength = getFileSize();
        if(fileLength == -1){
          System.err.println("不可知的文件長度!");
          textArea.append("\n不可知的文件長度");
        }
        else
          if(fileLength == -2){
            System.err.println("文件無法獲取!");
            textArea.append("\n文件無法獲取");
          }
          else{
            for(int i=0;i<startPos.length;i++){//文件劃分成和進程數相同的小塊
              startPos[i] = (long)(i*(fileLength/startPos.length));
            }
            for(int i=0;i<endPos.length-1;i++){
              endPos[i] = startPos[i+1];
            }
            endPos[endPos.length-1] = fileLength;
            for(int i=0;i<startPos.length;i++){
              info = "線程" + i + " 下載范圍: " + startPos[i] + " -- " +endPos[i];
              System.out.println(info);
              textArea.append("\n" + info);
      		}
          }

      downFileSplitter = new DownFileSplitter[startPos.length];//啟動一組子線程
      for(int i=0;i<startPos.length;i++){
        downFileSplitter[i] = new DownFileSplitter(dlURL,saveFileAs,startPos[i],endPos[i],i,textArea);
        info = "線程" + i + " 啟動";
        textArea.append("\n" + info);
        downFileSplitter[i].start();
        System.out.println(info);
        
      }
 
      boolean breakWhile = false;
      while(!stop){//等待整個下下載過程結束
        Thread.sleep(500);
        breakWhile = true;
        for(int i=0;i<startPos.length;i++){//檢測每條線程都已經完成則整個下載完成
          if(!downFileSplitter[i].done){
          breakWhile = false;
          break;
        }
      }
      if(breakWhile)
        break;
      }
      System.out.println("文件傳輸結束!");//文件傳輸結束
      textArea.append("\n文件傳輸結束!");
    }
    catch(Exception e){
      e.printStackTrace ();
    }
  }

  
  public long getFileSize(){//獲得文件長度
    int fileLength = -1;
    try{
      URL url = new URL(dlURL);
      HttpURLConnection httpConnection = (HttpURLConnection)url.openConnection ();
      int responseCode=httpConnection.getResponseCode();
      if(responseCode>=400){
        processErrorCode(responseCode);
        return -2; //Web服務器響應錯誤
      }
      String sHeader;
      for(int i=1;;i++){//查找標識文件長度的文件頭,獲取文件長度
        sHeader=httpConnection.getHeaderFieldKey(i);
        if(sHeader!=null){
          if(sHeader.equals("Content-Length")){
            fileLength = Integer.parseInt(httpConnection.getHeaderField(sHeader));
            break;
          }
        }
        else
          break;
      }
    }
    catch(IOException e){e.printStackTrace ();}
    catch(Exception e){e.printStackTrace ();}
    return fileLength;
  }

  private void processErrorCode(int nErrorCode){
    System.err.println("Error Code : " + nErrorCode);
  }

  //停止文件傳輸
  public void siteStop(){
    stop = true;
    for(int i=0;i<startPos.length;i++)
      downFileSplitter[i].splitterStop();
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美伊人久久大香线蕉综合69| 精品国产一区二区亚洲人成毛片| 奇米精品一区二区三区在线观看 | 欧美亚洲综合网| 国产成人综合在线观看| 国产精品自拍一区| 国内精品久久久久影院色| 奇米一区二区三区| 欧美大胆人体bbbb| 亚洲精品你懂的| 国产欧美一区二区精品忘忧草| 日韩欧美一区二区在线视频| 欧美视频完全免费看| 欧美日韩小视频| 欧美精品在线视频| 国产午夜亚洲精品理论片色戒 | 石原莉奈在线亚洲二区| 日韩国产欧美在线视频| 久草这里只有精品视频| 国产激情视频一区二区三区欧美| 丁香婷婷综合五月| 91免费观看视频| 欧美精品久久99| 26uuu国产日韩综合| 国产无遮挡一区二区三区毛片日本| 在线精品视频免费观看| 欧美日韩中文精品| 欧美不卡视频一区| 中文字幕制服丝袜一区二区三区| 一区二区三区免费在线观看| 日韩va欧美va亚洲va久久| 狠狠v欧美v日韩v亚洲ⅴ| 99在线热播精品免费| 欧美日韩你懂得| 欧美激情综合五月色丁香| 一卡二卡三卡日韩欧美| 久久精品99国产国产精| 色综合亚洲欧洲| 精品久久久久久综合日本欧美| 国产精品初高中害羞小美女文| 丝袜国产日韩另类美女| 成人精品国产一区二区4080| 91精品国产麻豆国产自产在线| 国产午夜亚洲精品午夜鲁丝片| 亚洲国产精品久久人人爱| 日本道色综合久久| 欧美性欧美巨大黑白大战| 欧美www视频| 日韩理论在线观看| 久久激情五月激情| 欧美日韩在线亚洲一区蜜芽| 亚洲国产精品精华液ab| 丝袜美腿高跟呻吟高潮一区| av电影一区二区| 精品国产91久久久久久久妲己| 亚洲美女屁股眼交| 国产成人综合视频| 精品国产一区二区三区久久影院 | 亚洲www啪成人一区二区麻豆 | 国产ts人妖一区二区| 欧美日韩成人激情| 亚洲三级免费观看| 国产精品18久久久久久久久| 制服丝袜中文字幕亚洲| 亚洲精品写真福利| 色狠狠色狠狠综合| 亚洲欧美一区二区久久| caoporn国产精品| 国产欧美精品国产国产专区 | 久久精品网站免费观看| 琪琪一区二区三区| 欧美精品久久久久久久久老牛影院| 欧美一级黄色录像| 欧美一二三区在线观看| 亚洲欧洲精品一区二区三区不卡| 久久99精品久久只有精品| 欧美一级xxx| 日本不卡高清视频| 欧美一二三四在线| 精品一区二区三区欧美| 精品国产欧美一区二区| 精品一区二区三区在线观看国产| 日韩欧美国产精品一区| 精品午夜一区二区三区在线观看| 日韩免费成人网| 激情五月播播久久久精品| 久久综合九色综合久久久精品综合| 青青草91视频| 国产日韩av一区二区| zzijzzij亚洲日本少妇熟睡| 亚洲精品网站在线观看| 欧美色男人天堂| 人人精品人人爱| 久久综合九色综合欧美就去吻| 国产不卡在线视频| 亚洲乱码国产乱码精品精98午夜 | 不卡的电视剧免费网站有什么| 国产精品免费视频网站| 国产一区二区不卡在线| 久久久久9999亚洲精品| 成人精品小蝌蚪| 粉嫩在线一区二区三区视频| 亚洲国产精品国自产拍av| 91在线精品一区二区| 亚洲成人高清在线| 国产亚洲精品bt天堂精选| 色网站国产精品| 免费成人你懂的| 中文字幕中文字幕一区| 欧美人与性动xxxx| 国产91色综合久久免费分享| 夜夜嗨av一区二区三区| 精品欧美一区二区久久| 91在线丨porny丨国产| 免费在线看成人av| 一区二区中文字幕在线| 日韩欧美一区二区在线视频| av中文字幕在线不卡| 日韩av一区二区三区四区| 中文一区二区在线观看| 欧美一级黄色录像| 色噜噜久久综合| 国产成a人无v码亚洲福利| 亚洲午夜久久久久中文字幕久| 久久五月婷婷丁香社区| 欧美日韩免费一区二区三区 | 97久久超碰国产精品电影| 日本不卡中文字幕| 玉足女爽爽91| 中文字幕二三区不卡| 欧美sm美女调教| 欧美日韩黄视频| 91欧美激情一区二区三区成人| 国产一本一道久久香蕉| 免费亚洲电影在线| 亚洲成人免费av| 一区二区三区免费| 1000部国产精品成人观看| 久久久国产午夜精品| 欧美本精品男人aⅴ天堂| 欧美日本国产一区| 欧美日韩日本视频| 精品视频一区二区不卡| 91国产免费看| 91麻豆成人久久精品二区三区| 丁香激情综合国产| 丁香网亚洲国际| 国产一区二区三区黄视频| 麻豆极品一区二区三区| 日韩国产一二三区| 免费人成在线不卡| 日本强好片久久久久久aaa| 婷婷久久综合九色综合伊人色| 亚洲制服丝袜av| 亚洲va国产va欧美va观看| 亚洲成人精品在线观看| 午夜婷婷国产麻豆精品| 调教+趴+乳夹+国产+精品| 日韩有码一区二区三区| 日韩制服丝袜先锋影音| 老司机精品视频线观看86 | 国产亚洲一本大道中文在线| 久久综合久色欧美综合狠狠| 久久影院电视剧免费观看| 久久久91精品国产一区二区三区| 久久久久久毛片| 中文字幕久久午夜不卡| 亚洲欧美色图小说| 亚洲一区二区三区四区五区中文 | 日韩三级在线免费观看| 日韩欧美视频在线| 国产欧美精品国产国产专区| 国产精品电影一区二区三区| 一区二区三区中文字幕精品精品 | 欧美www视频| 久久久久久久久免费| 亚洲私人黄色宅男| 亚洲高清不卡在线观看| 裸体一区二区三区| 天天免费综合色| 国产精品视频免费看| 中文字幕第一区第二区| 亚洲裸体在线观看| 另类小说图片综合网| 国产成人欧美日韩在线电影| 欧洲一区在线观看| 精品久久久久久久久久久久包黑料 | 一区二区三区日韩精品视频| 婷婷中文字幕一区三区| 国产成人精品一区二| 91浏览器入口在线观看| 日韩一区二区影院| 国产精品午夜春色av| 亚瑟在线精品视频| 成人一级黄色片| 91精品国产一区二区三区 | 一区二区三区在线视频免费观看| 日韩影院免费视频| 色屁屁一区二区| 国产蜜臀97一区二区三区|