开源FluentFTP实操,操控FTP文件

**概述:**通过FluentFTP库,轻松在.NET中实现FTP功能。支持判断、创建、删除文件夹,判断文件是否存在,实现上传、下载和删除文件。简便而强大的FTP操作,提升文件传输效率。

在.NET中,使用FluentFTP库可以方便地实现FTP的相关功能。以下是判断文件夹是否存在、文件夹的创建和删除、判断文件是否存在、文件的上传、下载和删除的基本操作。

FluentFTP是一个基于C#的开源FTP操作库,通过其简洁的API设计,使FTP操作更加易用。提供了丰富的功能,包括上传、下载、创建、删除文件和文件夹等。在.NET平台上,特别适用于处理FTP文件传输需求。

目录

1.安装

2.基本使用工具类


1.安装

在Visual Studio中,NuGet包管理器安装FluentFTP。在包管理器控制台中执行以下命令:

bash 复制代码
Install-Package FluentFTP

2.基本使用工具类

cs 复制代码
public class FluentFTPUtils
    {
        #region 属性与构造函数
        /// <summary>
        /// IP地址
        /// </summary>
        public string IpAddr { get; set; }
        /// <summary>
        /// 相对路径
        /// </summary>
        public string RelatePath { get; set; }
        /// <summary>
        /// 端口号
        /// </summary>
        public int Port { get; set; }
        /// <summary>
        /// 用户名
        /// </summary>
        public string UserName { get; set; }
        /// <summary>
        /// 密码
        /// </summary>
        public string Password { get; set; }
        public FluentFTPUtils()
        {
        }
        public FluentFTPUtils(string ipAddr, int port, string userName, string password, string relatePath)
        {
            this.IpAddr = ipAddr;
            this.Port = port;
            this.UserName = userName;
            this.Password = password;
            this.RelatePath = relatePath;
        }
        #endregion
        #region 方法
        public FtpListItem[] ListDir()
        {
            FtpListItem[] lists;
            using (var ftpClient = new FtpClient(this.IpAddr, this.UserName, this.Password, this.Port))
            {
                ftpClient.Connect();
                ftpClient.SetWorkingDirectory(this.RelatePath);
                lists = ftpClient.GetListing();
            }
            return lists;
        }
        public void UpLoad(string dir, string file, out bool isOk)
        {
            isOk = false;
            FileInfo fi = new FileInfo(file);
            using (FileStream fs = fi.OpenRead())
            {
                //long length = fs.Length;
                using (var ftpClient = new FtpClient(this.IpAddr, this.UserName, this.Password, this.Port))
                {
                    ftpClient.Connect();
                    ftpClient.SetWorkingDirectory(this.RelatePath);
                    string remotePath = dir + "/" + Path.GetFileName(file);
                    var ftpRemodeExistsMode = file.EndsWith(".txt") ? FtpRemoteExists.Overwrite : FtpRemoteExists.Skip;
                    FtpStatus status = ftpClient.UploadStream(fs, remotePath, ftpRemodeExistsMode, true);
                    isOk = status == FtpStatus.Success;
                }
            }
        }
        /// <summary>
        /// 上传多个文件
        /// </summary>
        /// <param name="files"></param>
        /// <param name="isOk"></param>
        public void UpLoad(string dir, string[] files, out bool isOk)
        {
            isOk = false;
            if (CheckDirIsExists(dir))
            {
                foreach (var file in files)
                {
                    UpLoad(dir, file, out isOk);
                }
            }
        }
        private bool CheckDirIsExists(string dir)
        {
            bool flag = false;
            using (var ftpClient = new FtpClient(this.IpAddr, this.UserName, this.Password, this.Port))
            {
                ftpClient.Connect();
                ftpClient.SetWorkingDirectory(this.RelatePath);
                flag = ftpClient.DirectoryExists(dir);
                if (!flag)
                {
                    flag = ftpClient.CreateDirectory(dir);
                }
            }
            return flag;
        }
        /// <summary>
        /// 下载ftp
        /// </summary>
        /// <param name="localAddress"></param>
        /// <param name="remoteAddress"></param>
        /// <returns></returns>
        public bool DownloadFile(string localAddress, string remoteAddress)
        {
            using (var ftpClient = new FtpClient(this.IpAddr, this.UserName, this.Password, this.Port))
            {
                ftpClient.SetWorkingDirectory("/");
                ftpClient.Connect();
                if (ftpClient.DownloadFile(localAddress, remoteAddress) == FtpStatus.Success)
                {
                    return true;
                }
                return false;
            }
        }
        #endregion
    }

FluentFTP库实现FTP相关功能的基本操作。

相关推荐
讨厌下雨的天空20 小时前
网络基础
网络·1024程序员节
金融小师妹1 天前
基于NLP语义解析的联储政策信号:强化学习框架下的12月降息概率回升动态建模
大数据·人工智能·深度学习·1024程序员节
mjhcsp2 天前
C++ 动态规划(Dynamic Programming)详解:从理论到实战
c++·动态规划·1024程序员节
金融小师妹3 天前
基于机器学习框架的上周行情复盘:非农数据与美联储政策信号的AI驱动解析
大数据·人工智能·深度学习·1024程序员节
渣渣盟3 天前
Flink分布式文件Sink实战解析
分布式·flink·scala·1024程序员节
CoderYanger3 天前
优选算法-栈:69.验证栈序列
java·开发语言·算法·leetcode·职场和发展·1024程序员节
金融小师妹5 天前
基于机器学习与深度强化学习:非农数据触发AI多因子模型预警!12月降息预期骤降的货币政策预测
大数据·人工智能·深度学习·1024程序员节
紫麦熊6 天前
react+ts+vite+tailwind+shadcn
1024程序员节
日日行不惧千万里6 天前
MediaMTX详解
1024程序员节
金融小师妹6 天前
基于LSTM-GARCH模型:三轮黄金周期特征提取与多因子定价机制解构
人工智能·深度学习·1024程序员节