C#实现自定义FTP操作封装类实例

所属分类: 软件编程 / C#教程 阅读数: 82
收藏 0 赞 0 分享

本文实例讲述了C#实现自定义FTP操作封装类。分享给大家供大家参考。具体如下:

这个C#类封装了FTP的常用操作,包括连接ftp服务器、列表服务器上的目录和文件,从ftp下载文件,上传文件到ftp服务器等等

using System;
using System.Text;
using System.IO;
namespace DotNet.Utilities
{
  public class FTPOperater
  {
    #region 属性
    private FTPClient ftp;
    /// <summary>
    /// 全局FTP访问变量
    /// </summary>
    public FTPClient Ftp
    {
      get { return ftp; }
      set { ftp = value; }
    }
    private string _server;
    /// <summary>
    /// Ftp服务器
    /// </summary>
    public string Server
    {
      get { return _server; }
      set { _server = value; }
    }
    private string _User;
    /// <summary>
    /// Ftp用户
    /// </summary>
    public string User
    {
      get { return _User; }
      set { _User = value; }
    }
    private string _Pass;
    /// <summary>
    /// Ftp密码
    /// </summary>
    public string Pass
    {
      get { return _Pass; }
      set { _Pass = value; }
    }
    private string _FolderZJ;
    /// <summary>
    /// Ftp密码
    /// </summary>
    public string FolderZJ
    {
      get { return _FolderZJ; }
      set { _FolderZJ = value; }
    }
    private string _FolderWX;
    /// <summary>
    /// Ftp密码
    /// </summary>
    public string FolderWX
    {
      get { return _FolderWX; }
      set { _FolderWX = value; }
    }
    #endregion
    /// <summary>
    /// 得到文件列表
    /// </summary>
    /// <returns></returns>
    public string[] GetList(string strPath)
    {
      if (ftp == null) ftp = this.getFtpClient();
      ftp.Connect();
      ftp.ChDir(strPath);
      return ftp.Dir("*");
    }
    /// <summary>
    /// 下载文件
    /// </summary>
    /// <param name="ftpFolder">ftp目录</param>
    /// <param name="ftpFileName">ftp文件名</param>
    /// <param name="localFolder">本地目录</param>
    /// <param name="localFileName">本地文件名</param>
    public bool GetFile(string ftpFolder, string ftpFileName, string localFolder, string localFileName)
    {
      try
      {
        if (ftp == null) ftp = this.getFtpClient();
        if (!ftp.Connected)
        {
          ftp.Connect();
          ftp.ChDir(ftpFolder);
        }
        ftp.Get(ftpFileName, localFolder, localFileName);
        return true;
      }
      catch
      {
        try
        {
          ftp.DisConnect();
          ftp = null;
        }
        catch { ftp = null; }
        return false;
      }
    }
    /// <summary>
    /// 修改文件
    /// </summary>
    /// <param name="ftpFolder">本地目录</param>
    /// <param name="ftpFileName">本地文件名temp</param>
    /// <param name="localFolder">本地目录</param>
    /// <param name="localFileName">本地文件名</param>
    public bool AddMSCFile(string ftpFolder, string ftpFileName, string localFolder, string localFileName, string BscInfo)
    {
      string sLine = "";
      string sResult = "";
      string path = "获得应用程序所在的完整的路径";
      path = path.Substring(0, path.LastIndexOf("\\"));
      try
      {
        FileStream fsFile = new FileStream(ftpFolder + "\\" + ftpFileName, FileMode.Open);
        FileStream fsFileWrite = new FileStream(localFolder + "\\" + localFileName, FileMode.Create);
        StreamReader sr = new StreamReader(fsFile);
        StreamWriter sw = new StreamWriter(fsFileWrite);
        sr.BaseStream.Seek(0, SeekOrigin.Begin);
        while (sr.Peek() > -1)
        {
          sLine = sr.ReadToEnd();
        }
        string[] arStr = sLine.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);
        for (int i = 0; i < arStr.Length - 1; i++)
        {
          sResult += BscInfo + "," + arStr[i].Trim() + "\n";
        }
        sr.Close();
        byte[] connect = new UTF8Encoding(true).GetBytes(sResult);
        fsFileWrite.Write(connect, 0, connect.Length);
        fsFileWrite.Flush();
        sw.Close();
        fsFile.Close();
        fsFileWrite.Close();
        return true;
      }
      catch (Exception e)
      {
        return false;
      }
    }
    /// <summary>
    /// 删除文件
    /// </summary>
    /// <param name="ftpFolder">ftp目录</param>
    /// <param name="ftpFileName">ftp文件名</param>
    public bool DelFile(string ftpFolder, string ftpFileName)
    {
      try
      {
        if (ftp == null) ftp = this.getFtpClient();
        if (!ftp.Connected)
        {
          ftp.Connect();
          ftp.ChDir(ftpFolder);
        }
        ftp.Delete(ftpFileName);
        return true;
      }
      catch
      {
        return false;
      }
    }
    /// <summary>
    /// 上传文件
    /// </summary>
    /// <param name="ftpFolder">ftp目录</param>
    /// <param name="ftpFileName">ftp文件名</param>
    public bool PutFile(string ftpFolder, string ftpFileName)
    {
      try
      {
        if (ftp == null) ftp = this.getFtpClient();
        if (!ftp.Connected)
        {
          ftp.Connect();
          ftp.ChDir(ftpFolder);
        }
        ftp.Put(ftpFileName);
        return true;
      }
      catch
      {
        return false;
      }
    }
    /// <summary>
    /// 下载文件
    /// </summary>
    /// <param name="ftpFolder">ftp目录</param>
    /// <param name="ftpFileName">ftp文件名</param>
    /// <param name="localFolder">本地目录</param>
    /// <param name="localFileName">本地文件名</param>
    public bool GetFileNoBinary(string ftpFolder, string ftpFileName, string localFolder, string localFileName)
    {
      try
      {
        if (ftp == null) ftp = this.getFtpClient();
        if (!ftp.Connected)
        {
          ftp.Connect();
          ftp.ChDir(ftpFolder);
        }
        ftp.GetNoBinary(ftpFileName, localFolder, localFileName);
        return true;
      }
      catch
      {
        try
        {
          ftp.DisConnect();
          ftp = null;
        }
        catch
        {
          ftp = null;
        }
        return false;
      }
    }
    /// <summary>
    /// 得到FTP上文件信息
    /// </summary>
    /// <param name="ftpFolder">FTP目录</param>
    /// <param name="ftpFileName">ftp文件名</param>
    public string GetFileInfo(string ftpFolder, string ftpFileName)
    {
      string strResult = "";
      try
      {
        if (ftp == null) ftp = this.getFtpClient();
        if (ftp.Connected) ftp.DisConnect();
        ftp.Connect();
        ftp.ChDir(ftpFolder);
        strResult = ftp.GetFileInfo(ftpFileName);
        return strResult;
      }
      catch
      {
        return "";
      }
    }
    /// <summary>
    /// 测试FTP服务器是否可登陆
    /// </summary>
    public bool CanConnect()
    {
      if (ftp == null) ftp = this.getFtpClient();
      try
      {
        ftp.Connect();
        ftp.DisConnect();
        return true;
      }
      catch
      {
        return false;
      }
    }
    /// <summary>
    /// 得到FTP上文件信息
    /// </summary>
    /// <param name="ftpFolder">FTP目录</param>
    /// <param name="ftpFileName">ftp文件名</param>
    public string GetFileInfoConnected(string ftpFolder, string ftpFileName)
    {
      string strResult = "";
      try
      {
        if (ftp == null) ftp = this.getFtpClient();
        if (!ftp.Connected)
        {
          ftp.Connect();
          ftp.ChDir(ftpFolder);
        }
        strResult = ftp.GetFileInfo(ftpFileName);
        return strResult;
      }
      catch
      {
        return "";
      }
    }
    /// <summary>
    /// 得到文件列表
    /// </summary>
    /// <param name="ftpFolder">FTP目录</param>
    /// <returns>FTP通配符号</returns>
    public string[] GetFileList(string ftpFolder, string strMask)
    {
      string[] strResult;
      try
      {
        if (ftp == null) ftp = this.getFtpClient();
        if (!ftp.Connected)
        {
          ftp.Connect();
          ftp.ChDir(ftpFolder);
        }
        strResult = ftp.Dir(strMask);
        return strResult;
      }
      catch
      {
        return null;
      }
    }
    /// <summary>
    ///得到FTP传输对象
    /// </summary>
    public FTPClient getFtpClient()
    {
      FTPClient ft = new FTPClient();
      ft.RemoteHost = this.Server;
      ft.RemoteUser = this.User;
      ft.RemotePass = this.Pass;
      return ft;
    }
  }
}

希望本文所述对大家的C#程序设计有所帮助。

更多精彩内容其他人还在看

c#开发word批量转pdf源码分享

已经安装有Office环境,借助一些简单的代码即可实现批量Word转PDF,看下面的实例源码吧
收藏 0 赞 0 分享

c# xml API操作的小例子

这篇文章主要介绍了c# xml API操作的小例子,有需要的朋友可以参考一下
收藏 0 赞 0 分享

c#唯一值渲染实例代码

这篇文章主要介绍了c#唯一值渲染实例代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

淘宝IP地址库采集器c#代码

这篇文章主要介绍了淘宝IP地址库采集器c#代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

C#在后台运行操作(BackgroundWorker用法)示例分享

BackgroundWorker类允许在单独的专用线程上运行操作。如果需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用BackgroundWorker类方便地解决问题,下面看示例
收藏 0 赞 0 分享

c#文本加密程序代码示例

这是一个加密软件,但只限于文本加密,加了窗口控件的滑动效果,详细看下面的代码
收藏 0 赞 0 分享

c#生成站点地图(SiteMapPath)文件示例程序

这篇文章主要介绍了c#生成站点地图(SiteMapPath)文件的示例,大家参考使用
收藏 0 赞 0 分享

C# 键盘Enter键取代Tab键实现代码

这篇文章主要介绍了C# 键盘Enter键取代Tab键实现代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

C# WinForm导出Excel方法介绍

在.NET应用中,导出Excel是很常见的需求,导出Excel报表大致有以下三种方式:Office PIA,文件流和NPOI开源库,本文只介绍前两种方式
收藏 0 赞 0 分享

C#串口通信程序实例详解

在.NET平台下创建C#串口通信程序,.NET 2.0提供了串口通信的功能,其命名空间是System.IO.Ports,创建C#串口通信程序的具体实现是如何的呢?让我们开始吧
收藏 0 赞 0 分享
查看更多