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

mon*_*tro 5 .net c# ssh sftp ssh.net

我连接到 SFTP 主机。

该主机有一个文件夹files

在此输入图像描述

里面还有一个文件。

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

我试过:

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

在此输入图像描述

但我认为我还获得了父文件夹引用,而不是 1 个文件。

请指教!谢谢。

Mar*_*ryl 4

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

例如:

client.ChangeDirectory("files");
var files =
    client.ListDirectory(".").
        Where(file => (file.Name != ".") && (file.Name != "..")).ToList();
Run Code Online (Sandbox Code Playgroud)

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

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

var files =
    client.ListDirectory("/files").
        Where(file => (file.Name != ".") && (file.Name != "..")).ToList();
Run Code Online (Sandbox Code Playgroud)