上面一篇已经发视频展示了FTP工具的操作使用,所以这一篇放一下主要源代码;

篇幅有限,这里就放一下操作FTP公共类代码;

其他的也没什么功能,一个页面展示(主要是TreeView控件和ListView控件),还有一个就是获取本地的文件(DirectoryInfo类)

实现功能:

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

开发环境:

开发工具: Visual Studio 2013

.NET Framework版本:4.5

实现代码:

  /*FTP操作公共类*/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操作工具相关推荐

  1. 手写一个好用的Java FTP操作工具类

    前言 网上百度了很多FTP的java 工具类,发现文章代码都比较久远,且代码臃肿,即使搜到了代码写的还可以的,封装的常用操作方法不全面,于是自己花了半天实现一个好用的工具类.最初想用java自带的FT ...

  2. sftp,ftp文件下载

    一.sftp工具类 package com.ztesoft.iotcmp.util;import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch ...

  3. linux中的 bin sh,Linux-#!/bin/sh理解

    #!是一个特殊符号,/bin/sh是用来解释该脚本的的shell路径 #!/bin/sh指该脚本使用/bin/sh来执行 sh只是其中一种解释方式,通过如下命令可以查到支持的shell解释方式: xx ...

  4. SpringMVC MultipartFile 异步批量上传文件

    使用MultipartFile,前端通过异步方式提交,以上传图片做个简例,只介绍前端及处理层代码 需求简述: 1.spring配置 <bean id="multipartResolve ...

  5. (转) 值得关注的开源软件推荐

    https://blog.csdn.net/zhangbin666/article/details/79172932 https://github.com/todd-xander?before=Y3V ...

  6. 转载:使用Spring进行数据访问(Data Access With Spring)

    Table of Contents 1.1. 统一的数据访问异常层次体系(Consistent Exception Hierarchy In Spring) 1.1.1. DAO模式的背景(Backg ...

  7. 安卓端简易FTP客户端APP开发

    先上效果图: 本文的FTP客户端基于commons-net-3.3.jar库实现. 实现了ftp服务器登录. 单个文件的下载和上传,以及本地复制和删除文件. 一.登录服务器活动模块编写: 这块呢首先是 ...

  8. ftp服务器文件传输安全性创新点,利用FTP进行文件传输时的主要安全问题存在于...

    类型:文件管理大小:7.7M语言:中文 评分:10.0 标签: 立即下载 利用FTP进行文件传输时的主要安全问题存在于什么是大家比较关心的,很多小伙伴们不知道这个答案是什么,想要知道这个答案的小伙伴们 ...

  9. 将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录

    将文件上传至ftp服务器,传入File对象,将文件上传至ftp服务器 需要配置修改的点: 1. 服务器ip端口(服务器ip 端口22/21). 2. 服务器账号密码(服务器登录用户名密码). 3. 上 ...

最新文章

  1. 测试tcp连接数工具_后端开发程序员不知道压力测试怎么能行
  2. IDEA 程序包org.springframework.web.bind.annotation不存在
  3. Vertx编程风格:您的反应式Web Companion REST API解释了
  4. linux终端cd未找到命令,为什么`which`命令不能用于`cd`?我也找不到`cd`的可执行文件!...
  5. 你所不了解的五条面试忠告
  6. ucache灾备云报价_UCACHE灾备云功能
  7. A recap of native memory
  8. u盘文件打不开怎么才能恢复
  9. 第二篇 第三章防火防烟分区检查(一)
  10. marvell 88W8686 sdio wifi模块学习
  11. python处理颜色rgb_python – 根据RGB值更改图像的颜色
  12. 设计模式六大原则及常用模式详解
  13. SQLSTATE[HY000] [1049] Unknown database
  14. IP地址,域名,服务器
  15. M的编程备忘录之Linux——基础开发工具
  16. error:1962 no operating system found
  17. 优秀课程案例:使用Scratch制作超级玛丽通关游戏
  18. jq/h5 实现实时获取大文件下载进度
  19. transition: background-color 0.5s ease-in 0s
  20. Tacacs+服务器部署

热门文章

  1. 从零学本体dApp开发(26):本体签名服务的API与Postman
  2. NFS挂载出现“mount can‘t find * in /etc/fstab“错误
  3. 计算机图形学-扫描转换直线段-直线方程法-DDA算法-中点算法-OPENGL实现-详解
  4. 淘客外卖返利系统,外卖cps系统 ,社群团购系统
  5. 百度地图WEB服务-地点检索API
  6. java把汉字转换成拼音的2种方式
  7. 不知道O2O产品的APP该如何运营推广?
  8. Tomcat启动报异常:com.sun.org.apache.xerces.internal.util.URI$MalformedURIException: Path contains invalid
  9. wifi 3A认证总体架构设计思路
  10. SAP-PP 生产订单中组件发货库存地点如何确定