java實現ftp斷點續傳

2021-06-21 12:50:03 字數 2109 閱讀 7067

利用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...