我连接到SFTP主机。
该主机有一个文件夹files
还有一个文件。
我需要获取该文件夹(文件)中的文件名列表。
我试过了:
using (var client = new SftpClient(FtpFolder, 22, FtpUsername, FtpPassword))
{
client.Connect();
client.ChangeDirectory("files");
var files = client.ListDirectory(".").ToList();
client.Disconnect();
}
但我认为,而不是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();