如何使用Tamir Gal的SharpSSH从SFTP服务器删除文件?我已经能够完成其他功能,但删除。
答案 0 :(得分:24)
SshExec课对我来说不起作用,但有点反射魔法工作:
var prop = sftp.GetType().GetProperty("SftpChannel", BindingFlags.NonPublic | BindingFlags.Instance);
var methodInfo = prop.GetGetMethod(true);
var sftpChannel = methodInfo.Invoke(sftp, null);
((ChannelSftp) sftpChannel).rm(ftpPath);
答案 1 :(得分:14)
要实现此目的,您需要修改SharpSSH程序集以公开您需要的功能。
获取源代码并打开$ \ SharpSSH-1.1.1.13.src \ SharpSSH \ Sftp.cs
在课程结束前插入以下代码行:
public void Delete(string path)
{
SftpChannel.rm(path);
}
重新编译并引用项目中重新编译的DLL。您现在可以删除SFTP服务器上的文件。
答案 2 :(得分:6)
您也可以使用 SshExec 类,然后使用“ RunCommand ”方法执行“rm”命令。这样你就不必重新编译和构建一个新的dll。
答案 3 :(得分:0)
使用Tamir的dll我建议使用以下代码删除。这样,您无需修改Tamir的dll,而以下代码可以在您的班级中编写。
string fromFile = "/a/b/MyFile.txt"
SshExec se = new SshExec(host, username, password);
se.Connect(port);
se.RunCommand("rm " + fromFile);