国产99福利精品视频|杨幂精品国产福利在线|国精品午夜福利视频不卡|欧美精品黄网站在线播放|精品国产乱码久久久久久久|国产大片中文字幕在线观看|国产肥熟女视频一区二区三区|国产乱码无码视频一区二区三区

用Java實現(xiàn)斷點續(xù)傳(HTTP)二

來源:北大青鳥飛迅校區(qū)|發(fā)布時間:2013-05-03 17:28:20

怎么樣,也很簡單吧。 接下來要做的就是整合成一個完整的程序了。包括一系列的線程控制等等。

斷點續(xù)傳內(nèi)核的實現(xiàn)

主要用了 6 個類,包括一個測試類。

SiteFileFetch.java 負責(zé)整個文件的抓取,控制內(nèi)部線程 (FileSplitterFetch 類 )。

FileSplitterFetch.java 負責(zé)部分文件的抓取。

FileAccess.java 負責(zé)文件的存儲。

SiteInfoBean.java 要抓取的文件的信息,如文件保存的目錄,名字,抓取文件的 URL 等。

Utility.java 工具類,放一些簡單的方法。

TestMethod.java 測試類。

下面是源程序:

/*

/*

* SiteFileFetch.java

*/

package NetFox;

import java.io.*;

import java.net.*;

public class SiteFileFetch extends Thread {

SiteInfoBean siteInfoBean = null; // 文件信息 Bean

long[] nStartPos; // 開始位置

long[] nEndPos; // 結(jié)束位置

FileSplitterFetch[] fileSplitterFetch; // 子線程對象

long nFileLength; // 文件長度

boolean bFirst = true; // 是否第一次取文件

boolean bStop = false; // 停止標志

File tmpFile; // 文件下載的臨時信息

DataOutputStream output; // 輸出到文件的輸出流

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.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 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();

}

上一篇:Java實現(xiàn)斷點續(xù)傳(HTTP)一
下一篇:北大青鳥老師講解:Java:Web應(yīng)用下實現(xiàn)定時任務(wù)的簡便方法

熱門話題

招生熱線: 4008-0731-86 / 0731-82186801

學(xué)校地址: 長沙市天心區(qū)團結(jié)路6號

Copyright © 2006 | 湖南大計信息科技有限公司 版權(quán)所有

湘ICP備14017520號-3

關(guān)注我們
在線咨詢
嘿,我來幫您!