完整的FTP類 功能簡介

taogchan發表於2011-11-30
功能
  • 建立FTP連結
  • 支援代理
  • 多種過載的同步上傳檔案
  • 多種過載的非同步上傳檔案
  • 多種過載的同步下載檔案
  • 多種過載的非同步下載檔案
  • 上傳檔案的進度百分比
  • 下載檔案的進度白分比
  • 有區分的列出目錄或者檔案的資訊(考慮到MS DOS顯示格式和UNIX格式)
  • 目錄或檔案存在的判斷
  • 刪除檔案
  • 重新命名檔案、目錄
  • 在FTP伺服器上面複製、移動檔案(許多人可能在苦苦尋找這個功能)
  • 建立、刪除目錄
  • 目錄切換操作(很新穎哦 J)

公共建構函式
 
名稱 說明
clsFTP() 初始化clsFtp類的新例項
clsFTP(Uri FtpUri, string strUserName, string strPassword) 由FTP地址、FTP登入使用者資訊、FTP登入使用者密碼初始化clsFtp類的新例項
clsFTP(Uri FtpUri, string strUserName, string strPassword, WebProxy objProxy) 由FTP地址、FTP登入使用者資訊、FTP登入使用者密碼、代理伺服器物件初始化clsFtp類的新例項
 
公共屬性
名稱 說明
Uri 獲取或設定FTP伺服器地址
DirectoryPath 獲取當前工作目錄
UserName 獲取或設定FTP登入使用者
Password 獲取或設定FTP登入密碼
Proxy 獲取或設定連線FTP伺服器的代理服務
ErrorMsg 獲取操在返回的錯誤資訊
 
公共事件
名稱 說明
DownloadProgressChanged 非同步下載進度發生改變觸發的事件
DownloadDataCompleted 非同步下載檔案完成之後觸發的事件
UploadProgressChanged 非同步上傳進度發生改變觸發的事件
UploadFileCompleted 非同步上傳檔案完成之後觸發的事件
公共方法
名稱 說明
DownloadFile(string RemoteFileName, string LocalPath) 從FTP伺服器下載檔案,使用與遠端檔案同名的檔名來儲存檔案。 引數說明: RemoteFileName: 遠端檔名 LocalPath: 本地路徑
DownloadFile(string RemoteFileName, string LocalPath, string LocalFileName) 從FTP伺服器下載檔案,指定本地路徑和本地檔名。 引數說明: LocalPath: 本地路徑 LocalFilePath: 儲存檔案的本地路徑,後面帶有"\" LocalFileName: 儲存本地的檔名
DownloadFile(string RemoteFileName) 從FTP伺服器下載檔案,返回檔案二進位制資料。 引數說明: RemoteFileName: 遠端檔名
DownloadFileAsync(string RemoteFileName, string LocalPath, string LocalFileName) 從FTP伺服器非同步下載檔案,指定本地路徑和本地檔名。 引數說明: RemoteFileName: 遠端檔名        LocalPath: 儲存檔案的本地路徑,後面帶有"\" LocalFileName: 儲存本地的檔名
DownloadFileAsync(string RemoteFileName, string LocalFullPath) 從FTP伺服器非同步下載檔案,指定本地完整路徑檔名。 引數說明: RemoteFileName: 遠端檔名 LocalFullPath: 本地完整路徑檔名
UploadFile(string LocalFullPath) 上傳檔案到FTP伺服器。 引數說明: LocalFullPath: 本地帶有完整路徑的檔名
UploadFile(string LocalFullPath, bool OverWriteRemoteFile) 上傳檔案到FTP伺服器。 引數說明: LocalFullPath: 本地帶有完整路徑的檔案 OverWriteRemoteFile: 是否覆蓋遠端伺服器上面同名的檔案
UploadFile(string LocalFullPath, string RemoteFileName) 上傳檔案到FTP伺服器。 引數說明: LocalFullPath: 本地帶有完整路徑的檔案 RemoteFileName: 要在FTP伺服器上面儲存檔名
UploadFile(string LocalFullPath, string RemoteFileName, bool OverWriteRemoteFile) 上傳檔案到FTP伺服器。 引數說明: LocalFullPath: 本地帶有完整路徑的檔名 RemoteFileName: 要在FTP伺服器上面儲存檔名 OverWriteRemoteFile: 是否覆蓋遠端伺服器上面同名的檔案
UploadFile(byte[] FileBytes, string RemoteFileName) 上傳檔案到FTP伺服器。 引數說明: FileBytes: 上傳的二進位制資料 RemoteFileName: 要在FTP伺服器上面儲存檔名
UploadFile(byte[] FileBytes, string RemoteFileName, bool OverWriteRemoteFile) 上傳檔案到FTP伺服器。 引數說明: FileBytes: 檔案二進位制內容 RemoteFileName: 要在FTP伺服器上面儲存檔名 OverWriteRemoteFile: 是否覆蓋遠端伺服器上面同名的檔案
UploadFileAsync(string LocalFullPath) 非同步上傳檔案到FTP伺服器。 引數說明: LocalFullPath: 本地帶有完整路徑的檔名
UploadFileAsync(string LocalFullPath, bool OverWriteRemoteFile) 非同步上傳檔案到FTP伺服器。 引數說明: LocalFullPath: 本地帶有完整路徑的檔案 OverWriteRemoteFile: 是否覆蓋遠端伺服器上面同名的檔案
UploadFileAsync(string LocalFullPath, string RemoteFileName) 非同步上傳檔案到FTP伺服器。 引數說明: LocalFullPath: 本地帶有完整路徑的檔案 RemoteFileName: 要在FTP伺服器上面儲存檔名
UploadFileAsync(string LocalFullPath, string RemoteFileName, bool OverWriteRemoteFile) 非同步上傳檔案到FTP伺服器。 引數說明: LocalFullPath: 本地帶有完整路徑的檔名 RemoteFileName: 要在FTP伺服器上面儲存檔名 OverWriteRemoteFile: 是否覆蓋遠端伺服器上面同名的檔案
UploadFileAsync(byte[] FileBytes, string RemoteFileName) 非同步上傳檔案到FTP伺服器。 引數說明: FileBytes: 上傳的二進位制資料 RemoteFileName: 要在FTP伺服器上面儲存檔名
UploadFileAsync(byte[] FileBytes, string RemoteFileName, bool OverWriteRemoteFile) 非同步上傳檔案到FTP伺服器。 引數說明: FileBytes: 檔案二進位制內容 RemoteFileName: 要在FTP伺服器上面儲存檔名 OverWriteRemoteFile: 是否覆蓋遠端伺服器上面同名的檔案
ListFilesAndDirectories() 列出FTP伺服器上面當前目錄的所有檔案和目錄。
ListFiles() 列出FTP伺服器上面當前目錄的所有檔案。
ListDirectories() 列出FTP伺服器上面當前目錄的所有的目錄。
DirectoryExist(string RemoteDirectoryName) 判斷當前目錄下指定的子目錄是否存在。 引數說明: RemoteDirectoryName: 指定的目錄名
FileExist(string RemoteFileName) 判斷一個遠端檔案是否存在伺服器當前目錄下面。 引數說明: RemoteFileName: 遠端檔名
DeleteFile(string RemoteFileName) 從FTP伺服器上面刪除一個檔案。 引數說明: RemoteFileName: 遠端檔名
ReName(string RemoteFileName, string NewFileName) 更改一個檔案的名稱或一個目錄的名稱。 引數說明: RemoteFileName: 原始檔案或目錄名稱 NewFileName: 新的檔案或目錄的名稱
CopyFileToAnotherDirectory(string RemoteFile, string DirectoryName) 把當前目錄下面的一個檔案複製到伺服器上面另外的目錄中,注意,複製檔案之後,當前工作目錄還是檔案原來所在的目錄。 引數說明: RemoteFile: 當前目錄下的檔名 DirectoryName: 新目錄名稱。  說明:如果新目錄是當前目錄的子目錄,則直接指定子目錄。如: SubDirectory1/SubDirectory2 ;  如果新目錄不是當前目錄的子目錄,則必須從根目錄一級一級的指定。如:./NewDirectory/SubDirectory1/SubDirectory2
MoveFileToAnotherDirectory(string RemoteFile, string DirectoryName) 把當前目錄下面的一個檔案移動到伺服器上面另外的目錄中,注意,移動檔案之後,當前工作目錄還是檔案原來所在的目錄。 引數說明: RemoteFile: 當前目錄下的檔名 DirectoryName: 新目錄名稱。  說明:如果新目錄是當前目錄的子目錄,則直接指定子目錄。如: SubDirectory1/SubDirectory2 ;  如果新目錄不是當前目錄的子目錄,則必須從根目錄一級一級的指定。如:./NewDirectory/SubDirectory1/SubDirectory2
MakeDirectory(string DirectoryName) 在FTP伺服器上當前工作目錄建立一個子目錄。 引數說明: DirectoryName: 子目錄名稱
RemoveDirectory(string DirectoryName) 從當前工作目錄中刪除一個子目錄。 引數說明: DirectoryName: 子目錄名稱
IsValidPathChars(string DirectoryName) 判斷目錄名中字元是否合法。 引數說明: DirectoryName: 目錄名稱
IsValidFileChars(string FileName) 判斷檔名中字元是否合法。 引數說明: FileName: 檔名稱
GotoDirectory(string DirectoryName) 進入一個目錄。 引數說明: DirectoryName:  新目錄的名字。  說明:如果新目錄是當前目錄的子目錄,則直接指定子目錄。如: SubDirectory1/SubDirectory2 ;  如果新目錄不是當前目錄的子目錄,則必須從根目錄一級一級的指定。如:./NewDirectory/SubDirectory1/SubDirectory2
EnterOneSubDirectory(string DirectoryName) 從當前工作目錄進入一個子目錄。 引數說明: DirectoryName: 子目錄名稱
ComeoutDirectory() 從當前工作目錄往上一級目錄。
 
其他說明
序號 說明
1 支援代理伺服器。 可以顯式地給Proxy屬性賦值;也可以在建構函式中傳遞Proxy物件。如果代理需要登入使用者和密碼,則設定Proxy的Credentials屬性,例如: Proxy.Credentials = new NetworkCredential(UserName, Password) 如果沒有代理,則無需給Proxy屬性賦值或者在建構函式中無需傳遞Proxy引數。
2 下載檔案和上傳檔案大小最大受Int32.MaxValue限制,所以最大處理只能是2,147,483,647位元組。如果您想處理更大的檔案,請自己修改程式碼中對檔案開啟和讀寫操作部分的程式碼使其適應您的要求。
3 只有在非同步上傳檔案或者非同步下載檔案的時候,才支援進度百分比觸發事件和下載(上傳)完成事件。
4 由於伺服器未傳送檔案大小,因此被動 FTP 檔案傳輸總是將進度百分比顯示為零。若要顯示進度,可以透過重寫 GetWebRequest 虛擬方法來將 FTP 連線更改為活動狀態。所以,我們在clsFTP類中另外使用內部類MyWebClient  
5 在列出檔案和目錄的時候,clsFTP類區分出了所獲得的響應資料哪些是檔案,哪些是目錄。同時,考慮到了FTP伺服器上面目錄樣式為MS DOS和UNIX兩種表現形式的不同。
6 支援在FTP伺服器上面不同目錄之間移動檔案和複製檔案的功能。移動檔案的方法比較巧妙,只是複製檔案所使用的方法不太理想。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22392018/viewspace-712404/,如需轉載,請註明出處,否則將追究法律責任。

相關文章