C# WinSCP.NET程序集:如何下载目录

C# WinSCP.NET程序集:如何下载目录,c#,sftp,winscp,winscp-net,C#,Sftp,Winscp,Winscp Net,我用C语言编写了一个应用程序,它使用System.IO.GetDirectoires()和System.IO.GetFiles() 我现在必须将其转换为使用SFTP。我对WinSCP.NET程序集的PutFiles和GetFiles有经验,但我不知道如何获取目录列表。在winscp.exe中有一个GetFiles,我可以用它来处理文件,但是我无法得到我所知道的目录。是否有人有办法做到这一点,或者是否有一个更容易使用的库 // Setup session options SessionOption

我用C语言编写了一个应用程序,它使用
System.IO.GetDirectoires()
System.IO.GetFiles()

我现在必须将其转换为使用SFTP。我对WinSCP.NET程序集的
PutFiles
GetFiles
有经验,但我不知道如何获取目录列表。在winscp.exe中有一个
GetFiles
,我可以用它来处理文件,但是我无法得到我所知道的目录。是否有人有办法做到这一点,或者是否有一个更容易使用的库

// Setup session options
SessionOptions sessionOptions = new SessionOptions
{
    Protocol = Protocol.Sftp,
    HostName = "example.com",
    UserName = "user",
    Password = "mypassword",
    SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
};

using (Session session = new Session())
{
    // Connect
    session.Open(sessionOptions);
}

试试那样的

  // Connect
  session.Open(sessionOptions);

  RemoteDirectoryInfo directory = 

  session.ListDirectory("/");

  foreach (RemoteFileInfo fileInfo in directory.Files)
  {
         Console.WriteLine("{0} with size {1}, permissions {2} and last modification at {3}", fileInfo.Name, fileInfo.Length, fileInfo.FilePermissions, fileInfo.LastWriteTime);
  }
也尝试

string dumpCommand = "ls";
session.ExecuteCommand(dumpCommand)
WinSCP.NET程序集的下载既可以下载文件,也可以下载子文件夹


实际上,当您不想下载它们时,您必须显式地指定它们


如果要列出远程目录中的子文件夹,请使用with
EnumerationOptions.MatchDirectories
并将结果集筛选为具有以下内容的条目:

IEnumerable目录=
EnumerationRemoteFiles(路径、null、EnumerationOptions.MatchDirectory)。
其中(file=>file.IsDirectory);

但同样,下载目录时不需要执行此操作,
会话.GetFiles
会为您执行此操作。

您如何连接到ftp服务器?你必须向我们展示一些代码来帮助你。我正在使用SFTP会话。我编辑了我的帖子。很抱歉,格式不好。明白了。我添加了一个额外的标签来帮助这个问题得到更多的关注。
IEnumerable<RemoteFileInfo> directories =
    session.EnumerateRemoteFiles(path, null, EnumerationOptions.MatchDirectories).
        Where(file => file.IsDirectory);