如何使用SharpSSH以编程方式从SFTP服务器删除文件?

时间:2010-04-02 02:14:05

标签: c# .net sftp sharpssh

如何使用Tamir Gal的SharpSSH从SFTP服务器删除文件?我已经能够完成其他功能,但删除。

4 个答案:

答案 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);