我需要通过SharpSsh以递归方式将文件从服务器下载到SFTP。但我不明白如何确定文件名或目录。 现在我这样做了
static void recDir(string remotePath, string localPath)
{
Sftp _c = this.sftp;
ArrayList FileList = _c.GetFileList(remotePath);
FileList.Remove(".");
FileList.Remove("..");
for (int i = 0; i < FileList.Count; i++)
{
try
{
_c.Get(remotePath + "/" + FileList[i], localPath + "/" + FileList[i]);
Console.WriteLine("File: " + remotePath + "/" + FileList[i]);
}
catch (Exception e)
{
Console.WriteLine("Dir: " + remotePath + "/" + FileList[i]);
System.IO.Directory.CreateDirectory(localPath + "/" + FileList[i]);
recDir(remotePath + "/" + FileList[i], localPath + "/" + FileList[i]);
}
}
}
它有效,但似乎不正确。
答案 0 :(得分:2)
SharpSSH API不允许这样做。但是你可以编写它,因为SharpSSH是开源的。请注意,SharpSSH是一个糟糕的选择。它没有维持多年。
查看我对其他类似SharpSSH问题的回答:
或使用其他SFTP库:
SftpClient.ListDirectory
返回IEnumerable<SftpFile>
。 SftpFile
具有.IsDirectory
属性Session.ListDirectory
返回(通过RemoteDirectoryInfo.Files
)RemoteFileInfo
财产.IsDirectory
的集合。
(我是WinSCP .NET程序集的作者)