收藏 分销(赏)

ftpclient..doc

上传人:xrp****65 文档编号:7045782 上传时间:2024-12-25 格式:DOC 页数:15 大小:100KB
下载 相关 举报
ftpclient..doc_第1页
第1页 / 共15页
ftpclient..doc_第2页
第2页 / 共15页
ftpclient..doc_第3页
第3页 / 共15页
ftpclient..doc_第4页
第4页 / 共15页
ftpclient..doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、using System;using System.Collections.Generic;using System.Net;using System.IO;namespace FTP操作 / / FTP客户端操作类 / public class FtpClient #region 构造函数 / / 创建FTP工具 / / 默认不使用SSL,使用二进制传输方式,使用被动模式 / / / 主机名称 / 用户名 / 密码 public FtpClient(string host, string userId, string password) : this(host, userId, passwo

2、rd, 21, null, false, true, true) / / 创建FTP工具 / / 主机名称 / 用户名 / 密码 / 端口 / 允许Ssl / 代理 / 允许二进制 / 允许被动模式 public FtpClient(string host, string userId, string password, int port, IWebProxy proxy, bool enableSsl, bool useBinary, bool usePassive) this.userId = userId; this.password = password; if (host.ToLow

3、er().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 主机 private string host = string.Empty; / / 主机 / public string Host get return this.ho

4、st ? string.Empty; #endregion #region 登录用户名 private string userId = string.Empty; / / 登录用户名 / public string UserId get return this.userId; #endregion #region 密码 private string password = string.Empty; / / 密码 / public string Password get return this.password; #endregion #region 代理 IWebProxy proxy = n

5、ull; / / 代理 / public IWebProxy Proxy get return this.proxy; set this.proxy = value; #endregion #region 端口 private int port = 21; / / 端口 / public int Port get return port; set this.port = value; #endregion #region 设置是否允许Ssl private bool enableSsl = false; / / EnableSsl / public bool EnableSsl get ret

6、urn enableSsl; #endregion #region 使用被动模式 private bool usePassive = true; / / 被动模式 / public bool UsePassive get return usePassive; set this.usePassive = value; #endregion #region 二进制方式 private bool useBinary = true; / / 二进制方式 / public bool UseBinary get return useBinary; set this.useBinary = value; #

7、endregion #region 远端路径 private string remotePath = /; / / 远端路径 / / 返回FTP服务器上的当前路径(可以是 / 或 /a/./ 的形式) / / public string RemotePath get return remotePath; set string result = /; if (!string.IsNullOrEmpty(value) & value != /) result = / + value.TrimStart(/).TrimEnd(/) + /; this.remotePath = result; #en

8、dregion #region 创建一个FTP连接 / / 创建一个FTP请求 / / 请求地址 / 请求方法 / FTP请求 private FtpWebRequest CreateRequest(string url, string method) /建立连接 FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url); request.Credentials = new NetworkCredential(this.userId, this.password); request.Proxy = this.proxy; req

9、uest.KeepAlive = false;/命令执行完毕之后关闭连接 request.UseBinary = useBinary; request.UsePassive = usePassive; request.EnableSsl = enableSsl; request.Method = method; return request; #endregion #region 上传一个文件到远端路径下 / / 把文件上传到FTP服务器的RemotePath下 / / 本地文件信息 / 要保存到FTP文件服务器上的名称 public bool Upload(FileInfo localFil

10、e, string remoteFileName) bool result = false; if (localFile.Exists) string url = Host.TrimEnd(/) + RemotePath + remoteFileName; FtpWebRequest request = CreateRequest(url, WebRequestMethods.Ftp.UploadFile); /上传数据 using (Stream rs = request.GetRequestStream() using (FileStream fs = localFile.OpenRead

11、) byte buffer = new byte4096;/4K int count = 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; return result; throw new Exception(string.Format(本地文件不存在,文件路径:0, localFile.FullName); #endregion #region

12、从FTP服务器上下载文件 / / 从当前目录下下载文件 / / 如果本地文件存在,则从本地文件结束的位置开始下载. / / / 服务器上的文件名称 / 本地文件名称 / 返回一个值,指示是否下载成功 public bool Download(string serverName, string localName) bool result = false; using (FileStream fs = new FileStream(localName, FileMode.OpenOrCreate) /创建或打开本地文件 /建立连接 string url = Host.TrimEnd(/) + R

13、emotePath + serverName; FtpWebRequest request = CreateRequest(url, WebRequestMethods.Ftp.DownloadFile); request.ContentOffset = fs.Length; using (FtpWebResponse response = (FtpWebResponse)request.GetResponse() fs.Position = fs.Length; byte buffer = new byte4096;/4K int count = response.GetResponseSt

14、ream().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; return result; #endregion #region 重命名FTP服务器上的文件 / / 文件更名 / / 原文件名 / 新文件名 / 返回一个值,指示更名是否成功 publi

15、c bool Rename(string oldFileName, string newFileName) bool result = false; /建立连接 string url = Host.TrimEnd(/) + RemotePath + oldFileName; FtpWebRequest request = CreateRequest(url, WebRequestMethods.Ftp.Rename); request.RenameTo = newFileName; using (FtpWebResponse response = (FtpWebResponse)request

16、GetResponse() result = true; return result; #endregion #region 从当前目录下获取文件列表 / / 获取当前目录下文件列表 / / public List GetFileList() List result = new List(); /建立连接 string url = Host.TrimEnd(/) + RemotePath; FtpWebRequest request = CreateRequest(url, WebRequestMethods.Ftp.ListDirectory); using (FtpWebResponse

17、 response = (FtpWebResponse)request.GetResponse() StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);/中文文件名 string line = reader.ReadLine(); while (line != null) result.Add(line); line = reader.ReadLine(); return result; #endregion #region 从FTP服务器上获取文件

18、和文件夹列表 / / 获取详细列表 / / public List GetFileDetails() List result = new List(); /建立连接 string url = Host.TrimEnd(/) + RemotePath; FtpWebRequest request = CreateRequest(url, WebRequestMethods.Ftp.ListDirectoryDetails); using (FtpWebResponse response = (FtpWebResponse)request.GetResponse() StreamReader re

19、ader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);/中文文件名 string line = reader.ReadLine(); while (line != null) result.Add(line); line = reader.ReadLine(); return result; #endregion #region 从FTP服务器上删除文件 / / 删除FTP服务器上的文件 / / 文件名称 / 返回一个值,指示是否删除成功 public bool DeleteFil

20、e(string fileName) bool result = false; /建立连接 string url = Host.TrimEnd(/) + RemotePath + fileName; FtpWebRequest request = CreateRequest(url, WebRequestMethods.Ftp.DeleteFile); using (FtpWebResponse response = (FtpWebResponse)request.GetResponse() result = true; return result; #endregion #region 在F

21、TP服务器上创建目录 / / 在当前目录下创建文件夹 / / 文件夹名称 / 返回一个值,指示是否创建成功 public bool MakeDirectory(string dirName) bool result = false; /建立连接 string url = Host.TrimEnd(/) + RemotePath + dirName; FtpWebRequest request = CreateRequest(url, WebRequestMethods.Ftp.MakeDirectory); using (FtpWebResponse response = (FtpWebRes

22、ponse)request.GetResponse() result = true; return result; #endregion #region 从FTP服务器上删除目录 / / 删除文件夹 / / 文件夹名称 / 返回一个值,指示是否删除成功 public bool DeleteDirectory(string dirName) bool result = false; /建立连接 string url = Host.TrimEnd(/) + RemotePath + dirName; FtpWebRequest request = CreateRequest(url, WebReq

23、uestMethods.Ftp.RemoveDirectory); using (FtpWebResponse response = (FtpWebResponse)request.GetResponse() result = true; return result; #endregion #region 从FTP服务器上获取文件大小 / / 获取文件大小 / / / public long GetFileSize(string fileName) long result = 0; /建立连接 string url = Host.TrimEnd(/) + RemotePath + fileNa

24、me; FtpWebRequest request = CreateRequest(url, WebRequestMethods.Ftp.GetFileSize); using (FtpWebResponse response = (FtpWebResponse)request.GetResponse() result = response.ContentLength; return result; #endregion #region 给FTP服务器上的文件追加内容 / / 给FTP服务器上的文件追加内容 / / 本地文件 / FTP服务器上的文件 / 返回一个值,指示是否追加成功 public bool Append(FileInfo localFile, string remoteFileName) if (localFile.Exists) using (FileStream fs = new FileStream(localFile.FullName, FileMode.Open) return Append(fs, remoteFileName); throw new Exception(string.Format(本地文件不存在,文件路径:0, localFile.FullName); / / 给FTP服务器上的文件追加内容 / / param name=str

展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服