15

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

4

4 回答 4

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);
于 2011-06-28T21:57:23.750 回答
14

为此,您需要修改 SharpSSH 程序集以公开您需要的功能。

获取源代码并打开$\SharpSSH-1.1.1.13.src\SharpSSH\Sftp.cs

在类的末尾插入以下代码行:

public void Delete(string path)
{
    SftpChannel.rm(path);
}

在您的项目中重新编译并引用重新编译的 DLL。您现在可以删除 SFTP 服务器上的文件。

于 2010-04-22T12:42:12.410 回答
6

那么您也可以使用SshExec类,然后使用“ RunCommand ”方法执行“rm”命令。这样您就不必重新编译和构建新的 dll。

于 2010-06-04T22:26:36.200 回答
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);
于 2016-12-07T18:58:16.833 回答