97: /// <summary> 98: /// 删除SFTP文件 99: /// </summary> 100: /// <param name="remoteFile"></param> 101: /// <returns></returns> 102: 103: public void Delete(string remoteFile) 104: { 105: string fullRemotePath = defRemotePath + remoteFile.TrimStart('/'); 106: m_sftp.rm(fullRemotePath); 107: } 108: /// <summary> 109: /// 获取SFTP文件列表 110: /// </summary> 111: /// <param name="remotePath"></param> 112: /// <param name="fileType">文件后缀名称(.txt)</param> 113: /// <returns></returns> 114: public List<string> GetFileList(string remotePath, string fileType) 115: { 116: List<string> objList = new List<string>(); 117: string fullRemotePath = defRemotePath + remotePath.TrimStart('/'); 118: if (DirExist(fullRemotePath)) 119: { 120: Tamir.SharpSsh.java.util.Vector vvv = m_sftp.ls(fullRemotePath); 121: foreach (Tamir.SharpSsh.jsch.ChannelSftp.LsEntry qqq in vvv) 122: { 123: string sss = qqq.getFilename(); 124: if (sss.Length > (fileType.Length + 1) && fileType == sss.Substring(sss.Length - fileType.Length)) 125: { objList.Add(sss); } 126: else { continue; } 127: } 128: } 129: return objList; 130: } 131: 132: /// <summary> 133: /// 目录是否存在 134: /// </summary> 135: /// <param name="dirName">目录名称必须从根开始</param> 136: /// <returns></returns> 137: public bool DirExist(string dirName) 138: { 139: try 140: { 141: m_sftp.ls(defRemotePath + dirName.TrimStart('/')); 142: return true; 143: } 144: catch (Tamir.SharpSsh.jsch.SftpException) 145: { 146: return false;//执行ls命令时出错,则目录不存在。 147: } 148: } 149: 150: /// <summary> 151: /// 创建目录 152: /// </summary> 153: /// <param name="dirName">目录名称必须从根开始</param> 154: /// <returns></returns> 155: public void Mkdir(string dirName) 156: { 157: Tamir.SharpSsh.java.util.Vector vvv = m_sftp.ls(defRemotePath); 158: foreach (Tamir.SharpSsh.jsch.ChannelSftp.LsEntry fileName in vvv) 159: { 160: string name = fileName.getFilename(); 161: if (name == dirName) 162: { 163: throw new Exception("dir is exist"); 164: } 165: } 166: m_sftp.mkdir(defRemotePath + dirName.TrimStart('/')); 167: } 168: 169: /// <summary> 170: /// 连接SFTP 171: /// </summary> 172: public void ConnectSftp() 173: { 174: JSch jsch = new JSch(); //利用java实现的通讯包 175: m_session = jsch.getSession(this.UserName, this.HostName, this.Port); 176: m_session.setHost(this.HostName); 177: MyUserInfo ui = new MyUserInfo(); 178: ui.setPassword(this.Password); 179: m_session.setUserInfo(ui); 180: 181: if (!m_session.isConnected()) 182: { 183: m_session.connect(); 184: m_channel = m_session.openChannel("sftp"); 185: m_channel.connect(); 186: m_sftp = (ChannelSftp)m_channel; 187: } 188: } 189: 190: /// <summary> 191: /// 断开SFTP 192: /// </summary> 193: public void DisconnectSftp() 194: { 195: if (m_session.isConnected()) 196: { 197: m_channel.disconnect(); 198: m_session.disconnect(); 199: } 200: } 201: 202: #endregion 203: 204: //登录验证信息 205: private class MyUserInfo : UserInfo 206: { 207: String passwd; 208: public String getPassword() { return passwd; } 209: public void setPassword(String passwd) { this.passwd = passwd; } 210: 211: public String getPassphrase() { return null; } 212: public bool promptPassphrase(String message) { return true; } 213: 214: public bool promptPassword(String message) { return true; } 215: public bool promptYesNo(String message) { return true; } 216: public void showMessage(String message) { } 217: } 218: 219: public void Dispose() 220: { 221: this.DisconnectSftp(); 222: this.m_channel = null; 223: this.m_session = null; 224: this.m_sftp = null; 225: } 226: } 227: 228: } |
配置文件内容:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="SftpServer" type="System.Configuration.NameValueSectionHandler"/> </configSections> <SftpServer> <add key="host_name" value="127.0.0.1"/> <add key="user_name" value="test"/> <add key="password" value="123"/> </SftpServer> </configuration> |