过滤。 (此文件夹)和..(父文件夹)在C#SSH.NET中的SFTP目录中

时间:2018-09-17 16:54:06

标签: c# .net ssh sftp ssh.net

我连接到SFTP主机。

该主机有一个文件夹files

https://codesandbox.io/s/qzr18l41ow

其中一个文件。

我需要获取该文件夹(文件)中文件名的列表。

我尝试过:

using (var client = new SftpClient(FtpFolder, 22, FtpUsername, FtpPassword))
{
    client.Connect();
    client.ChangeDirectory("files");
    var files = client.ListDirectory(".").ToList();
    client.Disconnect();
}

enter image description here

但我认为除了1个文件之外,我还会获得父文件夹引用。

请指教!谢谢。

1 个答案:

答案 0 :(得分:0)

在SFTP协议中,无法要求服务器为您过滤文件。 SSH.NET API也没有任何功能可以在本地为您过滤文件。您必须自己做。

例如:

client.ChangeDirectory("files");
var files =
    client.ListDirectory(".").
        Where(file => (file.Name != ".") && (file.Name != "..")).ToList();

更改目录与​​该问题无关。实际上,SFTP协议甚至没有“工作目录”的概念。 “工作目录”仅由SSH.NET库在本地模拟。

所以这在功能上是等效的:

var files =
    client.ListDirectory("/files").
        Where(file => (file.Name != ".") && (file.Name != "..")).ToList();