ftpclient.docx

上传人:b****7 文档编号:8836186 上传时间:2023-02-02 格式:DOCX 页数:21 大小:19.75KB
下载 相关 举报
ftpclient.docx_第1页
第1页 / 共21页
ftpclient.docx_第2页
第2页 / 共21页
ftpclient.docx_第3页
第3页 / 共21页
ftpclient.docx_第4页
第4页 / 共21页
ftpclient.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

ftpclient.docx

《ftpclient.docx》由会员分享,可在线阅读,更多相关《ftpclient.docx(21页珍藏版)》请在冰豆网上搜索。

ftpclient.docx

ftpclient

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Net;

usingSystem.IO;

namespaceFTP操作

{

///

///FTP客户端操作类

///

publicclassFtpClient

{

#region构造函数

///

///创建FTP工具

///

///默认不使用SSL,使用二进制传输方式,使用被动模式

///

///

///主机名称

///用户名

///密码

publicFtpClient(stringhost,stringuserId,stringpassword)

:

this(host,userId,password,21,null,false,true,true)

{

}

///

///创建FTP工具

///

///主机名称

///用户名

///密码

///端口

///允许Ssl

///代理

///允许二进制

///允许被动模式

publicFtpClient(stringhost,stringuserId,stringpassword,intport,IWebProxyproxy,boolenableSsl,booluseBinary,boolusePassive)

{

this.userId=userId;

this.password=password;

if(host.ToLower().StartsWith("ftp:

//"))

{

this.host=host;

}

else

{

this.host="ftp:

//"+host;

}

this.port=port;

this.proxy=proxy;

this.enableSsl=enableSsl;

this.useBinary=useBinary;

this.usePassive=usePassive;

}

#endregion

#region主机

privatestringhost=string.Empty;

///

///主机

///

publicstringHost

{

get

{

returnthis.host?

?

string.Empty;

}

}

#endregion

#region登录用户名

privatestringuserId=string.Empty;

///

///登录用户名

///

publicstringUserId

{

get

{

returnthis.userId;

}

}

#endregion

#region密码

privatestringpassword=string.Empty;

///

///密码

///

publicstringPassword

{

get

{

returnthis.password;

}

}

#endregion

#region代理

IWebProxyproxy=null;

///

///代理

///

publicIWebProxyProxy

{

get

{

returnthis.proxy;

}

set

{

this.proxy=value;

}

}

#endregion

#region端口

privateintport=21;

///

///端口

///

publicintPort

{

get

{

returnport;

}

set

{

this.port=value;

}

}

#endregion

#region设置是否允许Ssl

privateboolenableSsl=false;

///

///EnableSsl

///

publicboolEnableSsl

{

get

{

returnenableSsl;

}

}

#endregion

#region使用被动模式

privateboolusePassive=true;

///

///被动模式

///

publicboolUsePassive

{

get

{

returnusePassive;

}

set

{

this.usePassive=value;

}

}

#endregion

#region二进制方式

privatebooluseBinary=true;

///

///二进制方式

///

publicboolUseBinary

{

get

{

returnuseBinary;

}

set

{

this.useBinary=value;

}

}

#endregion

#region远端路径

privatestringremotePath="/";

///

///远端路径

///

///返回FTP服务器上的当前路径(可以是/或/a/../的形式)

///

///

publicstringRemotePath

{

get

{

returnremotePath;

}

set

{

stringresult="/";

if(!

string.IsNullOrEmpty(value)&&value!

="/")

{

result="/"+value.TrimStart('/').TrimEnd('/')+"/";

}

this.remotePath=result;

}

}

#endregion

#region创建一个FTP连接

///

///创建一个FTP请求

///

///请求地址

///请求方法

///FTP请求

privateFtpWebRequestCreateRequest(stringurl,stringmethod)

{

//建立连接

FtpWebRequestrequest=(FtpWebRequest)WebRequest.Create(url);

request.Credentials=newNetworkCredential(this.userId,this.password);

request.Proxy=this.proxy;

request.KeepAlive=false;//命令执行完毕之后关闭连接

request.UseBinary=useBinary;

request.UsePassive=usePassive;

request.EnableSsl=enableSsl;

request.Method=method;

returnrequest;

}

#endregion

#region上传一个文件到远端路径下

///

///把文件上传到FTP服务器的RemotePath下

///

///本地文件信息

///要保存到FTP文件服务器上的名称

publicboolUpload(FileInfolocalFile,stringremoteFileName)

{

boolresult=false;

if(localFile.Exists)

{

stringurl=Host.TrimEnd('/')+RemotePath+remoteFileName;

FtpWebRequestrequest=CreateRequest(url,WebRequestMethods.Ftp.UploadFile);

//上传数据

using(Streamrs=request.GetRequestStream())

using(FileStreamfs=localFile.OpenRead())

{

byte[]buffer=newbyte[4096];//4K

intcount=fs.Read(buffer,0,buffer.Length);

while(count>0)

{

rs.Write(buffer,0,count);

count=fs.Read(buffer,0,buffer.Length);

}

fs.Close();

result=true;

}

returnresult;

}

thrownewException(string.Format("本地文件不存在,文件路径:

{0}",localFile.FullName));

}

#endregion

#region从FTP服务器上下载文件

///

///从当前目录下下载文件

///

///如果本地文件存在,则从本地文件结束的位置开始下载.

///

///

///服务器上的文件名称

///本地文件名称

///返回一个值,指示是否下载成功

publicboolDownload(stringserverName,stringlocalName)

{

boolresult=false;

using(FileStreamfs=newFileStream(localName,FileMode.OpenOrCreate))//创建或打开本地文件

{

//建立连接

stringurl=Host.TrimEnd('/')+RemotePath+serverName;

FtpWebRequestrequest=CreateRequest(url,WebRequestMethods.Ftp.DownloadFile);

request.ContentOffset=fs.Length;

using(FtpWebResponseresponse=(FtpWebResponse)request.GetResponse())

{

fs.Position=fs.Length;

byte[]buffer=newbyte[4096];//4K

intcount=response.GetResponseStream().Read(buffer,0,buffer.Length);

while(count>0)

{

fs.Write(buffer,0,count);

count=response.GetResponseStream().Read(buffer,0,buffer.Length);

}

response.GetResponseStream().Close();

}

result=true;

}

returnresult;

}

#endregion

#region重命名FTP服务器上的文件

///

///文件更名

///

///原文件名

///新文件名

///返回一个值,指示更名是否成功

publicboolRename(stringoldFileName,stringnewFileName)

{

boolresult=false;

//建立连接

stringurl=Host.TrimEnd('/')+RemotePath+oldFileName;

FtpWebRequestrequest=CreateRequest(url,WebRequestMethods.Ftp.Rename);

request.RenameTo=newFileName;

using(FtpWebResponseresponse=(FtpWebResponse)request.GetResponse())

{

result=true;

}

returnresult;

}

#endregion

#region从当前目录下获取文件列表

///

///获取当前目录下文件列表

///

///

publicListGetFileList()

{

Listresult=newList();

//建立连接

stringurl=Host.TrimEnd('/')+RemotePath;

FtpWebRequestrequest=CreateRequest(url,WebRequestMethods.Ftp.ListDirectory);

using(FtpWebResponseresponse=(FtpWebResponse)request.GetResponse())

{

StreamReaderreader=newStreamReader(response.GetResponseStream(),System.Text.Encoding.Default);//中文文件名

stringline=reader.ReadLine();

while(line!

=null)

{

result.Add(line);

line=reader.ReadLine();

}

}

returnresult;

}

#endregion

#region从FTP服务器上获取文件和文件夹列表

///

///获取详细列表

///

///

publicListGetFileDetails()

{

Listresult=newList();

//建立连接

stringurl=Host.TrimEnd('/')+RemotePath;

FtpWebRequestrequest=CreateRequest(url,WebRequestMethods.Ftp.ListDirectoryDetails);

using(FtpWebResponseresponse=(FtpWebResponse)request.GetResponse())

{

StreamReaderreader=newStreamReader(response.GetResponseStream(),System.Text.Encoding.Default);//中文文件名

stringline=reader.ReadLine();

while(line!

=null)

{

result.Add(line);

line=reader.ReadLine();

}

}

returnresult;

}

#endregion

#region从FTP服务器上删除文件

///

///删除FTP服务器上的文件

///

///文件名称

///返回一个值,指示是否删除成功

publicboolDeleteFile(stringfileName)

{

boolresult=false;

//建立连接

stringurl=Host.TrimEnd('/')+RemotePath+fileName;

FtpWebRequestrequest=CreateRequest(url,WebRequestMethods.Ftp.DeleteFile);

using(FtpWebResponseresponse=(FtpWebResponse)request.GetResponse())

{

result=true;

}

returnresult;

}

#endregion

#region在FTP服务器上创建目录

///

///在当前目录下创建文件夹

///

///文件夹名称

///返回一个值,指示是否创建成功

publicboolMakeDirectory(stringdirName)

{

boolresult=false;

//建立连接

stringurl=Host.TrimEnd('/')+RemotePath+dirName;

FtpWebRequestrequest=CreateRequest(url,WebRequestMethods.Ftp.MakeDirectory);

using(FtpWebResponseresponse=(FtpWebResponse)request.GetResponse())

{

result=true;

}

returnresult;

}

#endregion

#region从FTP服务器上删除目录

///

///删除文件夹

///

///文件夹名称

///返回一个值,指示是否删除成功

publicboolDeleteDirectory(stringdirName)

{

boolresult=false;

//建立连接

stringurl=Host.TrimEnd('/')+RemotePath+dirName;

FtpWebRequestrequest=CreateRequest(url,WebRequestMethods.Ftp.RemoveDirectory);

using(FtpWebResponseresponse=(FtpWebResponse)request.GetResponse())

{

result=true;

}

returnresult;

}

#endregion

#region从FTP服务器上获取文件大小

///

///获取文件大小

///

///

///

publiclongGetFileSize(stringfileName)

{

longresult=0;

//建立连接

stringurl=Host.TrimEnd('/')+RemotePath+fileName;

FtpWebRequestrequest=CreateRequest(url,WebRequestMethods.Ftp.GetFileSize);

using(FtpWebResponseresponse=(FtpWebResponse)request.GetResponse())

{

result=response.ContentLength;

}

returnresult;

}

#endregion

#region给FTP服务器上的文件追加内容

///

///给FTP服务器上的文件

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1