Фильтрация(эта папка) и .. (родительская папка) в списке каталогов SFTP в C # SSH.NET - PullRequest
0 голосов
/ 17 сентября 2018

Я подключаюсь к хосту SFTP.

На этом хосте есть папка files

enter image description here

И один файл в нем.

Мне нужно получить список имен файлов в этой папке (файлы).

Я пытался:

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 голосов
/ 17 сентября 2018

В протоколе 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();
...