【问题标题】:Filtering . (this folder) and .. (parent folder) in SFTP directory listing in C# SSH.NET过滤。 (此文件夹)和 ..(父文件夹)在 C# SSH.NET 中的 SFTP 目录列表中
【发布时间】:2018-09-18 01:40:21
【问题描述】:

我连接到 SFTP 主机。

该主机有一个文件夹files

还有一个文件。

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

我试过了:

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

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

请指教!谢谢。

【问题讨论】:

  • 只是过滤掉它们?你的问题标题与此有什么关系?

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


【解决方案1】:

在 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();

【讨论】:

  • 对于像我这样偶然发现此问题的任何人,这应该是公认的答案并且有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-25
  • 2021-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多