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. Grizzly开发Echoserver实战

    Grizzly开发Echoserver实战 作者:chszs,转载需注明. 博客主页:http://blog.csdn.net/chszs 用Java编写可伸缩的server应用是有难度的.用Java ...

  2. 关于java中根据身份证求生日和年龄的问题

    /*这个也没什么大的功能,也没什么安全验证,只是对输入的身份证号码的长度进行了验证.其他的功能可以自己添加.*/import java.util.*; import java.util.Scanner ...

  3. compass模块

    Compass核心模块Reset :重置CSS模块 @import "compass/reset" Layout :页面布局的控制能力 @import "compass/ ...

  4. IEquatable(T) interface in .Net

    原文:http://weblogs.asp.net/pawanmishra/iequatable-t-interface-in-net 泛型方法: public static bool AreEqua ...

  5. EF加载实体的方式

    原文:Loading Related Entities EF加载数据的方式: 预加载 eager loading 延迟加载 lazy loading 显示加载 explicit loading 预先加 ...

  6. 如何把一个表中的部分字段值插入到另一个表中去 这sql吊

    Insert into  JHAC_TB_CODE(CID,CODE,ADD_TIME,USERID,PRO_CODE,USERNAME)  select f_code.FID,f_code.Fcod ...

  7. Proguard 保留native methods的问题

    发现一个奇怪的问题,如果使用下面的配置来keep的话,native的方法还是被删掉了,百思不得其解. -keepclasseswithmembers class * {     native *; } ...

  8. Oracle复杂查询

    1:列出所有员工的姓名,部门名称,和工资 select a1.ename,a1.sal,a2.dname from emp a1,dept a2 where a1.deptno = a2.deptno ...

  9. C#代码设置窗体和Panel的位置大小

    1.设置Panel位置大小 private void button2_Click(object sender, EventArgs e) { panel1.Visible = false; panel ...

  10. log在线生成器 html中如何设置浏览器中标题前的logo

    制作logo的地址:http://www.logomaker.com.cn/ 设置网站logo的方法 在<head></head>标签之间输入<link rel=&quo ...