1:  /// <summary>
  2:     /// FTP 管理类
  3:     /// </summary>
  4:     public class FTPManage
  5:     {
  6:         private string _Host;         //服务器地址
  7:         private int? _Port;         //端口号
  8:         private string _User;         //用户名
  9:         private string _Pass;         //密码
 10:         //public string  Path;         //具体文件路径
 11:         //public string  fileName;     //具体下载文件
 12:         //public string  SaveFilePath; //保存路径
 13: 
 14:         /// <summary>
 15:         /// 构造函数
 16:         /// </summary>
 17:         /// <param name="Host"></param>
 18:         /// <param name="Port"></param>
 19:         /// <param name="User"></param>
 20:         /// <param name="Pass"></param>
 21:         public FTPManage(string Host, int? Port, string User, string Pass)
 22:         {
 23:             this._Host = Host;
 24:             this._Port = Port;
 25:             this._User = User;
 26:             this._Pass = Pass;
 27:         }
 28: 
 29:         /// <summary>
 30:         /// 判断文件是否存在
 31:         /// </summary>
 32:         /// <returns></returns>
 33:         public string ChkIsFile(string path, string fielName)
 34:         {
 35:             string defaultStr = string.Empty;                   //默认不存在
 36:             if (string.IsNullOrEmpty(fielName)) //必须填写文件名
 37:             {
 38:                 return defaultStr = "文件名不能为空";
 39:             }
 40:             string url = string.Format("ftp://{0}/{1}/{2}", _Host, path, fielName);
 41:             var request = (FtpWebRequest)WebRequest.Create(url);
 42:             request.Credentials = new NetworkCredential(_User, _Pass);
 43:             request.Method = WebRequestMethods.Ftp.GetFileSize;
 44:             try
 45:             {
 46:                 FtpWebResponse response = (FtpWebResponse)request.GetResponse();
 47:             }
 48:             catch (WebException ex)
 49:             {
 50:                 FtpWebResponse response = (FtpWebResponse)ex.Response;
 51:                 if (response.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable)
 52:                 {
 53: 
 54:                 }
 55:                 return defaultStr = "获取文件异常";
 56:             }
 57:             return defaultStr;
 58:         }
 59: 
 60:         /// <summary>
 61:         /// 下载文件
 62:         /// </summary>
 63:         /// <param name="path"></param>
 64:         /// <param name="file"></param>
 65:         /// <param name="SavePath"></param>
 66:         /// <returns></returns>
 67:         public string LodeFile(string path, string fielName, string SavePath)
 68:         {
 69:             string defaultStr = string.Empty;
 70:             if (string.IsNullOrEmpty(fielName)) //必须填写文件名
 71:             {
 72:                 return defaultStr = "文件名不能为空";
 73:             }
 74:             if (string.IsNullOrEmpty(SavePath)) //必须填写文件名
 75:             {
 76:                 return defaultStr = "文件保存路径不能为空";
 77:             }
 78:             try
 79:             {
 80:                 string url = string.Format("ftp://{0}/{1}/{2}", _Host, path, fielName);
 81:                 FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(url);
 82:                 reqFTP.UseBinary = true;
 83:                 reqFTP.Credentials = new NetworkCredential(_User, _Pass);
 84: 
 85:                 FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
 86:                 Stream ftpStream = response.GetResponseStream();
 87:                 long cl = response.ContentLength;
 88:                 int bufferSize = 2048;
 89:                 int readCount;
 90:                 byte[] buffer = new byte[bufferSize];
 91: 
 92:                 readCount = ftpStream.Read(buffer, 0, bufferSize);
 93:                 FileHelper.IsDirectory(SavePath);
 94:                 FileStream outputStream = new FileStream(SavePath + "\\" + fielName, FileMode.Create);
 95:                 while (readCount > 0)
 96:                 {
 97:                     outputStream.Write(buffer, 0, readCount);
 98:                     readCount = ftpStream.Read(buffer, 0, bufferSize);
 99:                 }
100:                 ftpStream.Close();
101:                 outputStream.Close();
102:                 response.Close();
103:             }
104:             catch (Exception ex)
105:             {
106:                 defaultStr = "文件下载异常:" + ex.Message;
107:             }
108:             return defaultStr;
109:         }
110: 
111:         /// <summary>
112:         /// 获取指定目录文件列表
113:         /// </summary>
114:         /// <returns></returns>
115:         public string[] GetFileList(string Path)
116:         {
117:             try
118:             {
119:                 string url = string.Format("ftp://{0}/{1}", _Host, Path);
120:                 //获得FTP文件上的文件列表 
121:                 FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url);
122:                 request.Method = WebRequestMethods.Ftp.ListDirectory;
123:                 request.Credentials = new NetworkCredential(_User, _Pass);
124: 
125:                 FtpWebResponse response = (FtpWebResponse)request.GetResponse();
126:                 Stream stream = response.GetResponseStream();
127: 
128:                 StreamReader reader = new StreamReader(stream);
129:                 List<string> files = new List<string>();
130: 
131:                 while (!reader.EndOfStream)
132:                 {
133:                     string file = reader.ReadLine();
134:                     files.Add(file);
135:                 }
136: 
137:                 reader.Close();
138:                 stream.Close();
139: 
140:                 return files.ToArray();
141:             }
142:             catch { return new string[0]; }
143:         }
144: 
145:     }

FTP Client的更多相关文章

  1. Ubuntu Filezilla FTP Client 安装

    /************************************************************************************* * Ubuntu File ...

  2. 使用 FileZilla FTP Client连接Vsftpd在执行LIST命令后提示连接超时

    使用 FileZilla FTP Client 连接 Vsftpd在执行LIST命令后提示连接超时. vi /etc/vsftpd/vsftpd.conf 添加: #开启被动模式 pasv_enabl ...

  3. csharp: FTP Client Library using System.Net.FtpWebRequest

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  4. C# Ftp Client 基本操作

    C# Ftp Client 上传.下载与删除 简单介绍一下Ftp Client 上传.下载与删除,这是目前比较常用的命令,各个方法其实都差不多,重点是了解Ftp命令协议. 1.建立连接 public ...

  5. FileZilla FTP Client

    FileZilla Client是一个快速.实用.多功能和界面直观的免费的FTP客户端,虽然它是免费软件,可功能却一点也不含糊,比起那些共享软件来有过之而无不及,在新的版本中作者改进了手动下载的界面和 ...

  6. csharp: FTP Client Library using System.Net.FtpClient and FluentFTP,测试中存在的BUG修正

    https://netftp.codeplex.com/ /// <summary> /// Gets a file listing from the server. Each FtpLi ...

  7. csharp:FTP Client Library using FtpWebRequest or Sockets

    https://netftp.codeplex.com/SourceControl/latest http://ftplib.codeplex.com/ https://www.codeproject ...

  8. 【FileZilla FTP Client】文件与服务器操作客户端

    跨平台的FTP,FTPS和SFTP客户端 可以断点续传进行上传.下载(需要服务器支持). 自定义命令. 可进行站点管理.

  9. Spring Boot Ftp Client 客户端示例支持断点续传

    本章介绍 Spring Boot 整合 Ftpclient 的示例,支持断点续传 本项目源码下载 1 新建 Spring Boot Maven 示例工程项目 注意:是用来 IDEA 开发工具 File ...

随机推荐

  1. 知方可补不足~CSS中的几个伪元素

    对于一个很好的编辑器VS来说,它对于编程语句的自动提示功能是很强大的,有时,我们根本不需要看相关API,而直接看VS给我们的提示就可以完成一个新技术的学习了. 今天我们来说几个CSS中的伪元素,它们在 ...

  2. Thrift的安装和简单演示样例

    本文仅仅是简单的解说Thrift开源框架的安装和简单使用演示样例.对于具体的解说,后面在进行阐述. Thrift简述                                           ...

  3. .net网站开发(一):1.input表单元素

    其实,在半年前我对网站开发还是完全不感冒的,不是没认识,而是只认识到表面.我以为网站模型就那几样,新闻.论坛.博客啥的,仿个站出来有什么意思?但现在我是知道了,大多应用开发还是采用B/S架构的,包括服 ...

  4. javascript---String与Arry

    var str = "liuzhanqi"; document.write(str["length"]);//等价str.l ength var str = s ...

  5. 基于JQUERY写的 LISTBOX 选择器

    本文来之于:http://blog.csdn.net/jetsteven/article/details/5104380# 1.经常用到如下图的选择器,而且要支持排序的,所以萌生用JQUERY写一个. ...

  6. java equals 心得体会

    要记住最有用的一点: equals 在已经被系统定义好的类中 是已经被重写好了的 父类中的 equals方法是比较的两个对象是否指向同一引用 在被定义除了父类以外比较的是两个对象的内容 因此 人为定义 ...

  7. oc随笔三:多态

    多态使用总结: (1)没有继承就没有多态 (2)代码的体现:父类类型的指针指向子类对象 (3)好处:如果函数方法参数中使用的是父类类型,则可以传入父类和子类对象,而不用再去定义多个函数来和相应的类进行 ...

  8. Shiro 权限框架使用总结

    我们首先了解下什么是shiro ,Shiro 是 JAVA 世界中新近出现的权限框架,较之 JAAS 和 Spring Security,Shiro 在保持强大功能的同时,还在简单性和灵活性方面拥有巨 ...

  9. HDU 3001 状压DP

    有道状压题用了搜索被队友骂还能不能好好训练了,, hdu 3001 经典的状压dp 大概题意..有n个城市 m个道路  成了一个有向图.n<=10: 然后这个人想去旅行.有个超人开始可以把他扔到 ...

  10. No2_1.接口继承多态_Java学习笔记_接口

    接口.继承与多态 1.继承和多态是面向对象开发语言中的重要一个环节,使用得当,可以将整个程序的架构变得非常有弹性,减少代码冗余: 2.继承:复用定义好的类: 3.多态:可以动态调整对象的调用,降低对象 ...