C# WinSCP.NET程序集:如何下载目录
我用C语言编写了一个应用程序,它使用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
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);