C# FTP的使用

直接上代码如下:

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp2
{class Program{static void Main(string[] args){Console.WriteLine("Hello World!");FtpHelper ftpHelper = new FtpHelper("xxxxx", "","Administrator","1qaz@qwer");string[] datas = ftpHelper.GetAllList(null);Console.WriteLine(JsonConvert.SerializeObject(datas));Console.ReadLine();} }public class FtpHelper{string ftpServerIP;string ftpRemotePath;string ftpUserID;string ftpPassword;string ftpURI;/// <summary>/// 连接FTP/// </summary>/// <param name="FtpServerIP">FTP连接地址</param>/// <param name="FtpRemotePath">指定FTP连接成功后的当前目录, 如果不指定即默认为根目录</param>/// <param name="FtpUserID">用户名</param>/// <param name="FtpPassword">密码</param>public FtpHelper(string FtpServerIP, string FtpRemotePath, string FtpUserID, string FtpPassword){ftpServerIP = FtpServerIP;ftpRemotePath = FtpRemotePath;ftpUserID = FtpUserID;ftpPassword = FtpPassword;if (string.IsNullOrEmpty(ftpRemotePath)){ftpURI = "ftp://" + ftpServerIP + "/";}else{ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/";}}/// <summary>/// 下载/// </summary>/// <param name="filePath">下载保存的文件夹路径</param>/// <param name="fileName">文件名称</param>public bool Download(string filePath, string fileName){try{FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create);FtpWebRequest reqFTP;reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileName));reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;reqFTP.UseBinary = true;FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();Stream ftpStream = response.GetResponseStream();long cl = response.ContentLength;int bufferSize = 2048;int readCount;byte[] buffer = new byte[bufferSize];readCount = ftpStream.Read(buffer, 0, bufferSize);while (readCount > 0){outputStream.Write(buffer, 0, readCount);readCount = ftpStream.Read(buffer, 0, bufferSize);}ftpStream.Close();outputStream.Close();response.Close();return true;}catch (Exception ex){return false;}}/// <summary>/// 下载的异步方法/// </summary>/// <param name="filePath">下载保存的文件夹路径</param>/// <param name="fileName">文件名称</param>/// <returns></returns>public Task<bool> DownloadAsync(string filePath, string fileName){return Task.Run(() => { return Download(filePath, fileName); });}/// <summary>/// 获取文件名称/// </summary>/// <param name="url">为空则获取根目录下所有</param>/// <returns></returns>public string[] GetAllList(string url){List<string> list = new List<string>();FtpWebRequest req = (FtpWebRequest)WebRequest.Create(new Uri(ftpURI));req.Credentials = new NetworkCredential(ftpUserID, ftpPassword);req.Method = WebRequestMethods.Ftp.ListDirectory;req.UseBinary = true;req.UsePassive = true;try{using (FtpWebResponse res = (FtpWebResponse)req.GetResponse()){using (StreamReader sr = new StreamReader(res.GetResponseStream())){string s;while ((s = sr.ReadLine()) != null){list.Add(s);}}}}catch (Exception ex){Console.WriteLine(ex.StackTrace);}return list.ToArray();}/// <summary>  /// 获取当前目录下明细(包含文件和文件夹)  /// </summary>  public string[] GetFilesDetailList(){try{StringBuilder result = new StringBuilder();FtpWebRequest ftp;ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));ftp.Credentials = new NetworkCredential(ftpUserID, ftpPassword);ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;WebResponse response = ftp.GetResponse();StreamReader reader = new StreamReader(response.GetResponseStream());string line = reader.ReadLine();line = reader.ReadLine();line = reader.ReadLine();while (line != null){result.Append(line);result.Append("\n");line = reader.ReadLine();}result.Remove(result.ToString().LastIndexOf("\n"), 1);reader.Close();response.Close();return result.ToString().Split('\n');}catch (Exception ex){throw new Exception(ex.Message);}}/// <summary>  /// 移动文件  /// </summary>  public void MovieFile(string currentFilename, string newDirectory){ReName(currentFilename, newDirectory);}/// <summary>  /// 更改文件名  /// </summary> public bool ReName(string currentFilename, string newFilename){FtpWebRequest reqFTP;try{reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + currentFilename));reqFTP.Method = WebRequestMethods.Ftp.Rename;reqFTP.RenameTo = newFilename;reqFTP.UseBinary = true;reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();Stream ftpStream = response.GetResponseStream();ftpStream.Close();response.Close();return true;}catch (Exception ex){return false;}}/// <summary>  /// 获取指定文件大小  /// </summary>  public long GetFileSize(string filename){FtpWebRequest reqFTP;long fileSize = 0;try{reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + filename));reqFTP.Method = WebRequestMethods.Ftp.GetFileSize;reqFTP.UseBinary = true;reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();Stream ftpStream = response.GetResponseStream();fileSize = response.ContentLength;ftpStream.Close();response.Close();}catch (Exception ex){}return fileSize;}/// <summary>  /// 创建文件夹  /// </summary>   public bool MakeDir(string dirName){FtpWebRequest reqFTP;try{reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + dirName));reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;reqFTP.UseBinary = true;reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();Stream ftpStream = response.GetResponseStream();ftpStream.Close();response.Close();return true;}catch (Exception ex){return false;}}/// <summary>  /// 删除文件  /// </summary>  public bool Delete(string fileName){try{FtpWebRequest reqFTP;reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileName));reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;reqFTP.KeepAlive = false;string result = String.Empty;FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();long size = response.ContentLength;Stream datastream = response.GetResponseStream();StreamReader sr = new StreamReader(datastream);result = sr.ReadToEnd();sr.Close();datastream.Close();response.Close();return true;}catch (Exception ex){return false;}}/// <summary>  /// 上传  /// </summary>   public bool Upload(string filename){FileInfo fileInf = new FileInfo(filename);FtpWebRequest reqFTP;reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileInf.Name));reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);reqFTP.Method = WebRequestMethods.Ftp.UploadFile;reqFTP.KeepAlive = false;reqFTP.UseBinary = true;reqFTP.ContentLength = fileInf.Length;int buffLength = 2048;byte[] buff = new byte[buffLength];int contentLen;FileStream fs = fileInf.OpenRead();try{Stream strm = reqFTP.GetRequestStream();contentLen = fs.Read(buff, 0, buffLength);while (contentLen != 0){strm.Write(buff, 0, contentLen);contentLen = fs.Read(buff, 0, buffLength);}strm.Close();fs.Close();return true;}catch (Exception ex){return false;}}/// <summary>/// 上传的异步方法/// </summary>/// <param name="filename"></param>/// <returns></returns>public Task<bool> UploadAsync(string filename){return Task.Run(() => { return Upload(filename); });}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/780440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【项目技术介绍篇】若依开源项目RuoYi-Cloud后端技术介绍

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过大学刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0…

机器学习:scikit-learn库的主要组件

scikit-learn&#xff08;sklearn&#xff09;是一个用于机器学习的Python库&#xff0c;它提供了广泛的算法和工具&#xff0c;用于数据预处理、模型构建、模型评估、模型选择等。scikit-learn的设计遵循一致的API原则&#xff0c;使得使用不同的模型和算法变得简单且直观。以…

图解CAP原理

CAP原理 通常说一个分布式系统或者服务或者中间件&#xff0c;不能同时拥有这三个特性。它们只能两两组合。 分区容错性 尽管一个系统出现了数据的丢失或者故障&#xff0c;那么我们的系统仍然要对外提供正常的访问 如上图所示&#xff0c;一个结点挂掉不影响另一个结点对外提供…

3、Cocos Creator 节点和组件

目录 1、 节点和组件 2、 节点层级和显示顺序 3、坐标系和节点变换属性 坐标系 锚点 旋转 缩放 尺寸 4、 常用技巧 5、参考 1、 节点和组件 Cocos Creator 的工作流程是以组件式开发为核心的&#xff0c;组件式架构也称作 组件 — 实体系统&#xff08;或 Entity-C…

「PHP系列」PHP 常量/字符串、类型比较

文章目录 一、PHP 常量1. 定义常量使用 define() 函数使用 const 关键字&#xff08;在类内部&#xff09; 2. 访问常量3. 常量的特点4.注意事项5. 示例 二、PHP 字符串1. 定义字符串使用单引号使用双引号使用 heredoc 和 nowdoc 2. 字符串操作字符串连接字符串长度字符串替换字…

旅游管理系统|基于springBoot旅游管理系统设计与实现(附项目源码+论文)

基于springBoot旅游管理系统设计与实现 一、摘要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本旅游管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助…

脏牛提权(靶机复现)

目录 一、脏牛漏洞概述 二、漏洞复现 1.nmap信息收集 1.1.查看当前IP地址 1.2.扫描当前网段,找出目标机器 1.3.快速扫描目标机全端口 三、访问收集到的资产 192.168.40.134:80 192.168.40.134:1898 四、msf攻击 1.查找对应exp 2.选择对应exp并配置相关设置 五、内…

每天五分钟卷积神经网络:如何基于滑动窗口技术完成目标的检测?

汽车检测算法 现在我们想要构建一个汽车检测算法,我们希望输入到算法中一张图片,算法就可以帮助我们检测出这张图片中是否有汽车。 数据集 首先创建一个标签训练集,x是样本,y是标签。我们的训练集最好是被剪切过的图片,剪掉汽车以外的部分,使汽车居于中间位置,就是整张…

如何使用jQuery来隐藏和显示一个元素?描述一下jQuery中的事件绑定方法。

如何使用jQuery来隐藏和显示一个元素&#xff1f; 在jQuery中&#xff0c;隐藏和显示元素是常见的操作&#xff0c;可以通过.hide()和.show()方法来实现。这两个方法分别用于隐藏和显示选定的HTML元素。 隐藏元素 要隐藏一个元素&#xff0c;你可以使用.hide()方法。例如&…

Java 学习和实践笔记(50):使用Comparable 接口确定对象根据什么属性来排序

多个对象进行排序时&#xff0c;需要根据对象的什么属性来排序。 例如&#xff0c;同样都是人&#xff0c;可以根据人的身高排序&#xff0c;可以根据人的年龄排序。因此&#xff0c;当对多个人进行排序时&#xff0c;就要事先确定好根据人的什么属性来排序。 使Comparable 接…

使用verilog实现俄罗斯方块游戏

编写俄罗斯方块游戏需要进行大量的硬件设计,包括图形显示、用户输入处理、游戏逻辑等。以下是一个简单的基于Verilog的俄罗斯方块游戏示例,用于说明该过程: ```verilog module tetris_game ( input clk, // 时钟信号 input reset, // 复位信号 input lef…

kubernetes(K8S)学习(八):K8S之常见部署方案

K8S之常见部署方案 一、普通部署二、滚动更新&#xff08;Rolling update&#xff09;三、蓝绿部署&#xff08;Blue/Green Deployment&#xff09;四、灰度发布&#xff08;金丝雀发布&#xff09; 常见的部署方案参考博文&#xff1a;常见部署方案&#xff1a;普通部署、滚动…

【物联网项目】基于ESP8266的家庭灯光与火情智能监测系统——文末完整工程资料源码

目录 系统介绍 硬件配置 硬件连接图 系统分析与总体设计 系统硬件设计 ESP8266 WIFI开发板 人体红外传感器模块 光敏电阻传感器模块 火焰传感器模块 可燃气体传感器模块 温湿度传感器模块 OLED显示屏模块 系统软件设计 温湿度检测模块 报警模块 OLED显示模块 …

Java基础之自增自减运算符

Java基础之自增自减运算符 基本用法 int a 10;a; System .out.prinln(a);//a11int a 10;a; System .out.prinln(a);//a11tip: 第一次运算之后a的值会更新 然后再进行下面的运算!!! 练习: 代码呈现: 结果: tip: x的值是最新的x的值.

微信小程序开发【从入门到精通】——页面导航

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

el-select的错误提示不生效、el-select验证失灵、el-select的blur规则失灵

发现问题 在使用el-select进行表单验证的时候&#xff0c;发现点击下拉列表没选的情况下&#xff0c;他不会提示没有选择选项的信息&#xff0c;我设置了rule如下 <!--el-select--><el-form-item label"等级" prop"level"><el-select v-m…

Y Combinator W24 AI 创业地图

近日公布&#xff0c;Y Combinator的W24 AI创业地图上&#xff0c;有149家公司专注于AI领域&#xff0c;占到了总数的63%哦&#xff01; 而且&#xff0c;这些公司中&#xff0c;有70%是在应用层发力&#xff0c;28%则专注于工具层&#xff0c;只有2%是搞基础设施的。 分类百分…

esp单片机下arduino_gfx不相干显示驱动优化对flash空间的占用对比

一般情况下&#xff0c;很多esp32或者esp8266下的tft模块驱动都会包含很多种&#xff0c;而我们只需要其中一种&#xff0c;那就有个疑问这些被编译进的显示驱动到底占用了多少空间&#xff0c;是否需要把他优化掉&#xff1f; 这是默认的驱动列表&#xff1a; 84个文件&…

对谈Concured首席技术官:利用AI和MongoDB打造个性化内容推荐系统

Built with MongoDB 栏目采访了AI初创企业Concured在成立约一年后加入的首席技术官 Tom Wilson&#xff0c;围绕 Concured 的人工智能使用情况、Wilson 加入团队的过程、坚持选择MongoDB的原因以及公司未来发展展开讨论。 关于Concured 内容无处不在。无论消费者寻找什么或所处…

解决WSL更新速度慢的方案

在Windows上安装Docker Desktop时&#xff0c;如果选择使用WSL&#xff0c;则可能会出现在运行程序前要求升级WSL的步骤。程序会提示使用下面指令来升级 wsl.exe --update但是升级速度特别慢&#xff0c;于是在网络不稳定的情况下经常会出现下载失败的情况。 百度里一直没搜到…