C#编写的一个SFTP工具类

1.引用文件

using Renci.SshNet;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;

2.SFTP操作类,各方法的返回值可根据个人需求修改

namespace XXX
{/// <summary>/// SFTP操作类/// </summary>class SFTPHelper{#region 字段或属性private SftpClient sftp;/// <summary>/// SFTP连接状态/// </summary>public bool Connected { get { return sftp.IsConnected; } }#endregion#region 构造/// <summary>/// 构造/// </summary>/// <param name="ip">IP</param>/// <param name="port">端口</param>/// <param name="user">用户名</param>/// <param name="pwd">密码</param>public SFTPHelper(string ip, string port, string user, string pwd){sftp = new SftpClient(ip, Int32.Parse(port), user, pwd);}#endregion#region 连接SFTP/// <summary>/// 连接SFTP/// </summary>/// <returns>true成功</returns>public string Connect(){try{if (!Connected){sftp.Connect();}return "SFTP连接成功";}catch (Exception ex){return string.Format("连接SFTP失败,原因:{0}", ex.Message);}}#endregion#region 断开SFTP/// <summary>/// 断开SFTP/// </summary> public string Disconnect(){try{if (sftp != null && Connected){sftp.Disconnect();}return "与SFTP断开连接";}catch (Exception ex){return string.Format("断开SFTP失败,原因:{0}", ex.Message);}}#endregion#region SFTP上传文件/// <summary>/// SFTP上传文件/// </summary>/// <param name="localPath">本地路径</param>/// <param name="remotePath">远程路径</param>public string Put(string localPath, string remotePath){try{using (var file = File.OpenRead(localPath)){sftp.UploadFile(file, remotePath);}return "SFTP文件上传成功";}catch (Exception ex){return string.Format("SFTP文件上传失败,原因:{0}", ex.Message);}}#endregion#region SFTP获取文件/// <summary>/// SFTP获取文件/// </summary>/// <param name="remotePath">远程路径</param>/// <param name="localPath">本地路径</param>public string Get(string remotePath, string localPath){try{var byt = sftp.ReadAllBytes(remotePath);File.WriteAllBytes(localPath, byt);return "SFTP文件下载成功";}catch (Exception ex){return string.Format("SFTP文件下载失败,原因:{0}", ex.Message);}}#endregion#region 删除SFTP文件/// <summary>/// 删除SFTP文件 /// </summary>/// <param name="remoteFile">远程路径</param>public string Delete(string remoteFile){try{sftp.Delete(remoteFile);return "SFTP文件删除成功";}catch (Exception ex){return string.Format("SFTP文件删除失败,原因:{0}", ex.Message);}}#endregion#region 获取SFTP文件列表/// <summary>/// 获取SFTP文件列表/// </summary>/// <param name="remotePath">远程目录</param>/// <param name="fileSuffix">文件后缀</param>/// <returns></returns>public ArrayList GetFileList(string remotePath, string fileSuffix){try{var files = sftp.ListDirectory(remotePath);var objList = new ArrayList();foreach (var file in files){string name = file.Name;if (name.Length > (fileSuffix.Length + 1) && fileSuffix == name.Substring(name.Length - fileSuffix.Length)){objList.Add(name);}}return objList;}catch (Exception ex){throw new Exception(string.Format("SFTP文件列表获取失败,原因:{0}", ex.Message));}}#endregion#region 移动SFTP文件/// <summary>/// 移动SFTP文件/// </summary>/// <param name="oldRemotePath">旧远程路径</param>/// <param name="newRemotePath">新远程路径</param>public void Move(string oldRemotePath, string newRemotePath){try{Connect();sftp.RenameFile(oldRemotePath, newRemotePath);Disconnect();}catch (Exception ex){throw new Exception(string.Format("SFTP文件移动失败,原因:{0}", ex.Message));}}#endregion}
}

C#编写的一个SFTP工具类相关推荐

  1. java中定义一个CloneUtil 工具类

    其实所有的java对象都可以具备克隆能力,只是因为在基础类Object中被设定成了一个保留方法(protected),要想真正拥有克隆的能力, 就需要实现Cloneable接口,重写clone方法.通 ...

  2. 鸿蒙harmonyOS封装一个Toast工具类

    鸿蒙harmonyOS封装一个Toast工具类 文章目录 鸿蒙harmonyOS封装一个Toast工具类 前言 一.参数都弄上即可 二.使用步骤 1.封装 2.使用 总结 前言 无语 提示:以下是本篇 ...

  3. Android开发-差点儿被Logcat骗了,用Logcat输出一行有长度限制,用递归方式封装一个Logcat工具类

    问题描述: 最近,调试一个程序,差点儿被一个简单的Logcat日志蒙蔽了双眼. 过程是这样的:在代码中,用Log.i(TAG, msg)来输出msg的信息.输出的结果却只输出了前面一部分,后面的字符没 ...

  4. webbrowser实现input tab事件_如何合理构造一个Uploader工具类(设计到实现)

    作者:Chaser (本文来自作者投稿) 原文地址:https://juejin.im/post/5e5badce51882549652d55c2 源码地址:https://github.com/im ...

  5. java连接sftp工具类

    本工具类支持远程连接sftp,上传下载文件 需要用到是jar是jsch-0.1.29.jar import java.io.BufferedReader;import java.io.File;imp ...

  6. 写一个测试工具类,只在debug时运行,而release时自动移除代码,适用于gradle项目(idea,android studio等)

    前言 平时开发有很多测试期间需要写的代码(比如日志),如何不让其在正式环境下运行呢?或者不让其在正式环境下存在(防止反编译查到重要信息) 实现方法 1.通过混淆(废弃,因为需要打开优化开关,经测打开后 ...

  7. 自定义一个SharedPreferences工具类

    这是一个操作SharedPreferences的工具类,封装了对sharedPreferences的操作. public class SharedpreferencesUtil {//SharedPr ...

  8. md5 java 工具类_Java实现一个MD5工具类

    I. MD5工具类 利用JDK封装一个简易的MD5工具类,逻辑比较简单,直接贴下具体实现 public static String getMD5(String content) { String re ...

  9. aspose 转pdf表格大小乱了_自己写了一个小工具类:pdf转word,没有页数和大小限制,保真!...

    昨天下午遇到一个问题,想把一个比较大的pdf转化为word,结果使用了各种工具都收费.想着干脆写一个小工具吧,一开始使用的python等等试了好几个网上的代码,结果全都失真.于是乎不得不花了一下午自己 ...

  10. 一个Excel工具类

    在工作中有很多场景需要读取excel,导出excel 搜了是这位大佬写的excel工具类, https://blog.csdn.net/l1028386804/article/details/7965 ...

最新文章

  1. 如何选择视觉CV光源颜色
  2. Softer-NMS:CMU旷视最新论文提出定位更加精确的目标检测算法
  3. 用javascript 禁止右键,禁止复制,禁止粘贴
  4. 英语对计算机人才的重要性,英语对计算机专业的重要性及如何提高英语水平
  5. SQLServer 的存储过程与java交互
  6. 禅道设置bug模板_禅道的自定义功能:表格切换和创建页面的自定义
  7. 创建WEBPARTS全过程
  8. Jersey学习笔记
  9. ESP8266 WIFI 模块连接OneNet测试
  10. echart获取geoJson格式世界各国地图的资源,世界地图,世界各国分区显示,精确到乡镇一级资源
  11. 红杉资本合伙人Maguire:Crypto将是未来30年最大趋势 |链捕手
  12. Tslint检查下代码JavaScript(angular)规范
  13. 使用PowerDesigner逆向工程生成pdm文件(超全)
  14. python数据解析——xpath爬取文字和图片
  15. 在线客服聊天系统 PHP Live Chat 二次开发
  16. mysql快照读取_MySQL 快照读和当前读
  17. Prism如何做线性拟合
  18. 口腔诊所医院客户关系管理(CRM)系统
  19. 查询上周五到本周四以及同比时间
  20. 步步高I508 JAVA_步步高i508怎么样 步步高i508报价

热门文章

  1. 整整240套Axure原型设计元件库 组件库 控件库分享
  2. 图像分辨率测试ISO12233 - 2017中文翻译
  3. java如何使用live2d_关于live2D的使用
  4. easyui图标对照
  5. WebService cxf简单入门附视频教程
  6. 计算机等级考试c语言 真题,计算机等级考试二级C语言真题
  7. sql日志文件查看工具
  8. aucc2018插件_Voxengo音频插件合集2018最新版
  9. discuz开发经验discuz x3 怎么在帖子列表显示论坛板块图标
  10. web一键返回顶端html代码,CSS-返回顶部代码_html/css_WEB-ITnose