前几天,看见园子里面的博友写了一个支持断点续传的FTP类,一时技痒,干脆写了个更完整的clsFtp类。只是我写这个clsFtp不是支持断点续传的目的,而是为了封装FTP几个基本常用的操作接口。
功能
ü 建立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 |
获取操在返回的错误信息 |
公共方法
名称
|
说明
|
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() |
从当前工作目录往上一级目录。 |
|
|
公共事件
名称
|
说明
|
DownloadProgressChanged |
异步下载进度发生改变触发的事件 |
DownloadDataCompleted |
异步下载文件完成之后触发的事件 |
UploadProgressChanged |
异步上传进度发生改变触发的事件 |
UploadFileCompleted |
异步上传文件完成之后触发的事件 |
|
|
其他说明
序号
|
说明
|
1 |
支持代理服务器。 可以显式地给Proxy属性赋值;也可以在构造函数中传递Proxy对象。如果代理需要登录用户和密码,则设置Proxy的Credentials属性,例如: Pr |