如何区分使用 SharpSSH 检索的 SFTP 列表中的目录?
How to distinguish a directory in SFTP listing retrieved using SharpSSH?
我需要通过 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]);
}
}
}
有效,但似乎不正确。
SharpSSH API 不允许这样做。但是您可以对其进行编码,因为 SharpSSH 是开源的。请注意,虽然 SharpSSH 是一个糟糕的选择。它没有维护多年。
查看我对另一个类似 SharpSSH 问题的回答:
- Download file based on date modified from SFTP.
- Get file size from SFTP using SharpSSH.
或者使用另一个 SFTP 库:
- SSH.NET 具有返回
IEnumerable<SftpFile>
的方法 SftpClient.ListDirectory
。 SftpFile
有 .IsDirectory
属性
- WinSCP .NET assembly has the method
Session.ListDirectory
returning (via the RemoteDirectoryInfo.Files
) a collection of the RemoteFileInfo
与 属性 .IsDirectory
(我是 WinSCP .NET 程序集的作者)
我需要通过 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]);
}
}
}
有效,但似乎不正确。
SharpSSH API 不允许这样做。但是您可以对其进行编码,因为 SharpSSH 是开源的。请注意,虽然 SharpSSH 是一个糟糕的选择。它没有维护多年。
查看我对另一个类似 SharpSSH 问题的回答:
- Download file based on date modified from SFTP.
- Get file size from SFTP using SharpSSH.
或者使用另一个 SFTP 库:
- SSH.NET 具有返回
IEnumerable<SftpFile>
的方法SftpClient.ListDirectory
。SftpFile
有.IsDirectory
属性 - WinSCP .NET assembly has the method
Session.ListDirectory
returning (via theRemoteDirectoryInfo.Files
) a collection of theRemoteFileInfo
与 属性.IsDirectory
(我是 WinSCP .NET 程序集的作者)