資源簡(jiǎn)介
java實(shí)現(xiàn)支持Http斷點(diǎn)續(xù)傳,下載過程可暫停,同時(shí)支持Ftp下載。

代碼片段和文件信息
/**
?*?文件名:ControlFileFetch.java
?*?創(chuàng)建人:張文婭
?*?日期:2010年7月18日
?*?描述:主線程,用于控制流程以及子線程
?*?參考資料:《JAVA編程思想》
?* ?? ??《JAVA范例大全》
?*?參考鏈接:http://202.194.127.1/dxjc/wlcxsj/JDK_API_1_6/overview-summary.html
?*??
?*/
package?com;
import?java.io.DataInputStream;
import?java.io.DataOutputStream;
import?java.io.File;
import?java.io.FileInputStream;
import?java.io.FileOutputStream;
import?java.io.IOException;
import?java.net.URL;
import?java.net.URLConnection;
public?class?ControlFileFetch?extends?Thread{ //控制主線程
private?TranBean?tranBean?=?null; //保存?zhèn)鬏斘募畔?
private?long[]?startPosition;
private?long[]?endPosition;
private?FileFetch[]?childThread; //子線程
private?long?fileLength;
private?boolean?isFirstGet?=?true;
private?boolean?isStopGet?=?false;
public?boolean?downloadOver?=?false;
private?File?fileTemp; //下載臨時(shí)信息文件
private?File?file; //本地文件
protected?boolean?fileExist?=?false;
private?DataOutputStream?output;
public?ControlFileFetch?(TranBean?tranBean)?throws?IOException?{
this.tranBean?=?tranBean;
fileTemp?=?new?File(tranBean.getFileDir()??+?tranBean.getFileName()?+“.tmp“);
file?=?new?File(tranBean.getFileDir()?+?tranBean.getFileName());
if(file.exists()&&!fileTemp.exists()){ //由于每次下載全部結(jié)束會(huì)刪掉臨時(shí)文件
isStopGet?=?true; //如果本地文件存在,而臨時(shí)文件不存在,則直接return
fileExist?=?true;
DownLoader.display(“文件“+tranBean.getFileName()+“已存在“);
return;
}
if(fileTemp.exists()){ //臨時(shí)文件存在,則曾經(jīng)下載過,但下載沒有完成
isFirstGet?=?false;
readInfo(); //讀取臨時(shí)文件信息,獲得各子線程開始結(jié)束位置
}else?{
startPosition?=?new?long[tranBean.getCount()];
endPosition?=?new?long[tranBean.getCount()];
}
}
public?void?run(){
try{
if(isFirstGet){ //第一次下載,分配各子線程開始結(jié)束位置
fileLength?=?getFileSize();
DownLoader.display(“文件總長(zhǎng)度為“?+?fileLength);
if(fileLength?==?-1){
DownLoader.display(“文件長(zhǎng)度未知“);
}
else?if(fileLength?==?-2){
DownLoader.display(“文件不可訪問“);
}
else{
for(int?i=0?;i startPosition[i]?=?(long)(i*(fileLength/startPosition.length));
}
for(int?i=0?;i endPosition[i]?=?(long)(startPosition[i]+fileLength/endPosition.length);
}
}
}
childThread?=?new?FileFetch[startPosition.length]; //創(chuàng)建子線程
for(int?i?=?0;i childThread[i]?=?new?FileFetch(tranBean.getWebAddr()tranBean.getFileDir()?+?tranBean.getFileName()startPosition[i]endPosition[i]i);
DownLoader.display(“線程“+(i+1)+“:開始位置=“+startPosition[i]+“結(jié)束位置=“+endPosition[i]);
childThread[i].start(); //啟動(dòng)子線程
}
boolean?breakWhile?=?false;
while?(!isStopGet){
savePosition(); //每隔0.5秒,保存下載位置
try{
Thread.sleep(500);
}catch(Exception?e){
DownLoader.display(“線程在睡覺啦“);
}
breakWhile?=?true;
for(int?i?=?0;i if(!childThread[i].downLoadO
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????232??2010-07-14?19:02??DownLoader\.classpath
?????文件????????387??2010-07-14?19:02??DownLoader\.project
?????文件???????4709??2010-07-19?10:30??DownLoader\bin\com\ControlFileFetch.class
?????文件???????6197??2010-07-19?10:29??DownLoader\bin\com\DownLoader.class
?????文件????????964??2010-07-19?10:31??DownLoader\bin\com\FileAccess.class
?????文件???????2369??2010-07-19?10:30??DownLoader\bin\com\FileFetch.class
?????文件???????5427??2010-07-19?10:30??DownLoader\bin\com\FtpDialog.class
?????文件???????2932??2010-07-19?10:25??DownLoader\bin\com\FtpMethod.class
?????文件????????989??2010-07-19?10:21??DownLoader\bin\com\HttpMethod.class
?????文件???????1333??2010-07-19?10:27??DownLoader\bin\com\TranBean.class
?????文件????????490??2010-07-19?08:39??DownLoader\readme.txt
?????文件???????5384??2010-07-19?10:30??DownLoader\src\com\ControlFileFetch.java
?????文件???????7188??2010-07-19?10:29??DownLoader\src\com\DownLoader.java
?????文件???????1042??2010-07-19?10:31??DownLoader\src\com\FileAccess.java
?????文件???????2227??2010-07-19?10:30??DownLoader\src\com\FileFetch.java
?????文件???????5884??2010-07-19?10:30??DownLoader\src\com\FtpDialog.java
?????文件???????2617??2010-07-19?10:25??DownLoader\src\com\FtpMethod.java
?????文件????????849??2010-07-19?10:21??DownLoader\src\com\HttpMethod.java
?????文件???????1299??2010-07-19?10:27??DownLoader\src\com\TranBean.java
?????目錄??????????0??2010-07-19?09:40??DownLoader\bin\com
?????目錄??????????0??2010-07-19?09:38??DownLoader\src\com
?????目錄??????????0??2010-07-18?16:39??DownLoader\bin
?????目錄??????????0??2010-07-14?19:05??DownLoader\src
?????目錄??????????0??2010-07-16?09:46??DownLoader
-----------?---------??----------?-----??----
????????????????52519????????????????????24
評(píng)論
共有 條評(píng)論