我的编程空间,编程开发者的网络收藏夹
学习永远不晚

基于C#实现一个简单的FTP操作工具

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

基于C#实现一个简单的FTP操作工具

实现功能

实现使用FTP上传、下载、重命名、刷新、删除功能

开发环境

开发工具: Visual Studio 2013

.NET Framework版本:4.5

实现代码

  
 
  private string FtpIp, FtpPort, FtpUser, FtpPwd, FtpUrl;
 
  private FTPUtil()
  {
 
  }
 
  public FTPUtil(string ftpIp, string ftpPort, string ftpUser, string ftpPwd)
  {
      FtpIp = ftpIp;
      FtpPort = ftpPort;
      FtpUser = ftpUser;
      FtpPwd = ftpPwd;
 
      FtpUrl = "ftp://" + ftpIp + ":" + ftpPort + "/";
  }
 
  private FtpWebRequest GetFtpWebRequest(string path, string method)
  {
      FtpWebRequest Ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(FtpUrl + "/" + path));
      Ftp.Credentials = new NetworkCredential(FtpUser, FtpPwd);
      Ftp.KeepAlive = false;
      Ftp.UsePassive = true;
      Ftp.Method = method;
      return Ftp;
  }
 
  /// <summary>
  /// 获取路径下所有文件夹
  /// </summary>
  /// <param name="dirName"></param>
  /// <returns></returns>
  public List<FileModel> GetDirs(string dirName)
  {
      return GetAllFiles(dirName).FindAll(s => s.Type == "文件夹");
  }
 
  /// <summary>
  /// 获取路径下所有文件
  /// </summary>
  /// <param name="dirName"></param>
  /// <returns></returns>
  public List<FileModel> GetFiles(string dirName)
  {
      return GetAllFiles(dirName).FindAll(s => s.Type == "文件");
  }
 
  /// <summary>
  /// 获取路径下所有项目
  /// </summary>
  /// <param name="dirName"></param>
  /// <returns></returns>
  public List<FileModel> GetAllFiles(string dirName)
  {
      List<FileModel> fileList = new List<FileModel>();
      try
      {
          FtpWebRequest Ftp = GetFtpWebRequest(dirName, WebRequestMethods.Ftp.ListDirectoryDetails);
 
          using (WebResponse response = Ftp.GetResponse())
          {
              using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
              {
                  string line = "";
                  while ((line = reader.ReadLine()) != null)
                  {
                      fileList.Add(ConvertFile(line, dirName));
                  }
              }
          }
      }
      catch (Exception ex)
      {
          throw ex;
      }
      return fileList;
  }
 
  /// <summary>
  /// FTP文件信息转换
  /// </summary>
  /// <param name="value"></param>
  /// <param name="dirName"></param>
  /// <returns></returns>
  private FileModel ConvertFile(string value, string dirName)
  {
      string[] arr = value.Split(new string[] { " " },4, StringSplitOptions.RemoveEmptyEntries);
 
     FileModel model = new FileModel();
      model.Date = arr[0];
      model.Time = arr[1];
      if (arr[2] == "<DIR>")
      {
          model.Type = "文件夹";
          model.Size = 0;
      }
      else
      {
          model.Type = "文件";
          model.Size = Convert.ToInt64(arr[2]);
      }
      model.Name = arr[3];
      model.FullName = dirName + "/" + model.Name;
      return model;
  }
 
  /// <summary>
  /// 上传
  /// </summary>
  /// <param name="fileName"></param>
  /// <param name="desFile"></param>
  public void Upload(string fileName, string desFile)
  {
      try
      {
          FileInfo fileInfo = new FileInfo(fileName);
 
          FtpWebRequest Ftp = GetFtpWebRequest(desFile, WebRequestMethods.Ftp.UploadFile);
          Ftp.UseBinary = true;
          Ftp.ContentLength = fileInfo.Length;
 
 
          int buffLength = 2048;
          byte[] buff = new byte[buffLength];
          int len = 0;
          using (FileStream fs = fileInfo.OpenRead())
          {
              using (Stream stream = Ftp.GetRequestStream())
              {
                  while ((len = fs.Read(buff, 0, buffLength)) != 0)
                  {
                      stream.Write(buff, 0, buffLength);
                  }
              }
          }
      }
      catch (Exception ex)
      {
          throw ex;
      }
 
 
  }
 
  /// <summary>
  /// 下载
  /// </summary>
  /// <param name="fileName"></param>
  /// <param name="desFile"></param>
  public void DownLoad(string fileName, string desFile)
  {
      try
      {
          FtpWebRequest Ftp = GetFtpWebRequest(fileName, WebRequestMethods.Ftp.DownloadFile);
          Ftp.UseBinary = true;
 
          FtpWebResponse response = (FtpWebResponse)Ftp.GetResponse();
          int buffLength = 2048;
          byte[] buff = new byte[buffLength];
          int len = 0;
          using (FileStream fs = new FileStream(desFile, FileMode.Create))
          {
              using (Stream stream = response.GetResponseStream())
              {
                  while ((len = stream.Read(buff, 0, buffLength)) != 0)
                  {
                      fs.Write(buff, 0, buffLength);
                  }
              }
          }
      }
      catch (Exception ex)
      {
          throw ex;
      }
  }
 
  /// <summary>
  /// 删除文件
  /// </summary>
  /// <param name="fileName"></param>
  public void DeleteFile(string fileName)
  {
      try
      {
          FtpWebRequest Ftp = GetFtpWebRequest(fileName, WebRequestMethods.Ftp.DeleteFile);
 
          FtpWebResponse response = (FtpWebResponse)Ftp.GetResponse();
 
          using (Stream datastream = response.GetResponseStream())
          {
              using (StreamReader sr = new StreamReader(datastream))
              {
                  sr.ReadToEnd();
              }
          }
      }
      catch (Exception ex)
      {
          throw ex;
      }
  }
 
 
  /// <summary>
  /// 重命名
  /// </summary>
  /// <param name="fileName"></param>
  /// <param name="newName"></param>
  public void ReName(string fileName, string newName)
  {
      try
      {
          FtpWebRequest Ftp = GetFtpWebRequest(fileName, WebRequestMethods.Ftp.Rename);
          Ftp.RenameTo = newName;
          Ftp.UseBinary = true;
 
          FtpWebResponse response = (FtpWebResponse)Ftp.GetResponse();
 
          using (Stream datastream = response.GetResponseStream())
          {
              using (StreamReader sr = new StreamReader(datastream))
              {
                  sr.ReadToEnd();
              }
          }
      }
      catch (Exception ex)
      {
          throw ex;
      }
  }

实现效果

FTP 操作工具视频演示

以上就是基于C#实现一个简单的FTP操作工具的详细内容,更多关于C# FTP操作工具的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

基于C#实现一个简单的FTP操作工具

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

基于Python实现一个简单的银行转账操作

前言 在进行一个应用系统的开发过程中,从上到下一般需要四个构件:客户端-业务逻辑层-数据访问层-数据库,其中数据访问层是一个底层、核心的技术。而且在实际开发中,数据库的操作也就是说数据访问层都是嵌套在其他语言中的,其是编程的核心。本文面向的
2022-06-04

基于Python制作一个简单的文章搜索工具

目录 前言功能实现导入模块创建窗口背景图片搜索文本框 内容显示界面搜索内容效果代码展示内容效果代码点击搜索功能代码访问博客网页 前言今天,我无聊的时候做了一个搜索文章的软件,有没有更加的方便快捷不知道,好玩就行了。基于Python tki
2023-05-12

基于C++实现一个简单的音乐系统

C++中的Beep函数是一个发出嗡鸣声的函数,本文将利用这个函数实现制作一个简单的声音系统。文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
2022-12-29

基于C#实现一个温湿度监测小工具

这篇文章主要为大家详细介绍了如何基于C#实现一个温湿度监测小工具,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
2023-01-12

基于Java怎样实现一个简单的单词本Android App

这篇文章跟大家分析一下“基于Java怎样实现一个简单的单词本Android App”。内容详细易懂,对“基于Java怎样实现一个简单的单词本Android App”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮
2023-06-29

怎么用Python实现基于Pyqt5的简单电影搜索工具

这篇文章主要介绍“怎么用Python实现基于Pyqt5的简单电影搜索工具”,在日常操作中,相信很多人在怎么用Python实现基于Pyqt5的简单电影搜索工具问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用
2023-06-02

基于Java快速实现一个简单版的HashMap详解

这篇文章主要为大家详细介绍了如何利用Java简单实现一个底层数据结构为数组 + 链表的HashMap,不考虑链表长度超过8个时变为红黑树的情况,需要的可以参考一下
2023-02-08

基于 Kotlin 实现一个简单的 TCP 自定义协议

想要成为一名优秀的Android开发,你需要一份完备的 知识体系,在这里,让我们一起成长为自己所想的那样~。
基于 Kotlin 实现一个简单的 TCP 自定义协议
2024-04-23

基于Python实现一个简单的学生管理系统

这篇文章主要为大家详细介绍了如何利用python实现简单的学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2022-12-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录