利用org.apache.commons.net.ftp包實現乙個簡單的ftp客戶端實用類。主要實現一下功能
2.支援進度匯報
3.支援對於中文目錄及中文檔案建立的支援。
列舉類uploadstatus**
public enum uploadstatus
public continueftp()
/*** 連線到ftp伺服器
* @param hostname 主機名
* @param port 埠
* @param username 使用者名稱
* @param password 密碼
* @return 是否連線成功
* @throws ioexception
*/public boolean connect(string hostname,int port,string username,string password) throws ioexception
}disconnect();
return false;
}//檢查遠端檔案是否存在
ftpfile files = ftpclient.listfiles(new string(remote.getbytes("gbk"),"iso-8859-1"));
if(files.length != 1)
/*** 上傳檔案到ftp伺服器,支援斷點續傳
* @param local 本地檔名稱,絕對路徑
* @param remote 遠端檔案路徑,使用/home/directory1/subdirectory/file.ext 按照linux上的路徑指定方式,支援多級目錄巢狀,支援遞迴建立不存在的目錄結構
* @return 上傳結果
* @throws ioexception
*/public uploadstatus upload(string local,string remote) throws ioexception
}//檢查遠端是否存在檔案
ftpfile files = ftpclient.listfiles(new string(remotefilename.getbytes("gbk"),"iso-8859-1"));
if(files.length == 1)else if(remotesize > localsize)
//嘗試移動檔案內讀取指標,實現斷點續傳
result = uploadfile(remotefilename, f, ftpclient, remotesize);
//如果斷點續傳沒有成功,則刪除伺服器上檔案,重新上傳
if(result == uploadstatus.upload_from_break_failed)
result = uploadfile(remotefilename, f, ftpclient, 0);
}}else
return result;
}/**
* 斷開與遠端伺服器的連線
* @throws ioexception
*/public void disconnect() throws ioexception
}/**
* 遞迴建立遠端伺服器目錄
* @param remote 遠端伺服器檔案絕對路徑
* @param ftpclient ftpclient物件
* @return 目錄建立是否成功
* @throws ioexception
*/public uploadstatus createdirecroty(string remote,ftpclient ftpclient) throws ioexceptionelse
end = directory.indexof("/",start);
while(true)else
}start = end + 1;
end = directory.indexof("/",start);
//檢查所有目錄是否建立完畢
if(end <= start)}}
return status;
}public static void main(string args) catch (ioexception e) }}
FTP實現斷點續傳
ftp客戶端實現要建立兩個通道,乙個控制命令通道,讓ftp伺服器知道客戶端要幹什麼,乙個資料傳輸通道。所謂的兩個通道只不過是兩個呼叫了connect函式的連線,只是控制命令通道專門用來傳輸一些字串命令資訊,而資料通道則是用來傳輸檔案。控制命令通道一定是由客戶端向伺服器的連線 預設的埠是21,也可以指...
FTP實現斷點續傳
ftp客戶端實現要建立兩個通道 乙個控制命令通道,讓ftp伺服器知道客戶端要幹什麼,乙個是資料傳輸通道。所謂的兩個通道只不過是兩個呼叫了connect函式的連線,只是控制命令通道專門用來傳輸一些字串命令資訊,而資料通道則是用來傳輸檔案。控制命令通道一定是由客戶端向伺服器的連線 預設的埠是21,也可以...
ftp斷點續傳
import open.mis.data.downloadstatus import open.mis.data.uploadstatus import org.apache.commons.net.printcommandlistener import org.apache.commons.net...