gpt4 book ai didi

c# - 如何使用 SSH.NET 列出目录?

转载 作者:行者123 更新时间:2023-11-30 21:34:13 24 4
gpt4 key购买 nike

我需要列出我的 Ubuntu 机器上的目录。

我用文件做了,但我找不到类似的目录解决方案。

public IEnumerable<string> GetFiles(string path)
{
using (var sftpClient = new SftpClient(_host, _port, _username, _password))
{
sftpClient.Connect();
var files = sftpClient.ListDirectory(path);
return files.Select(f => f.Name);
}
}

最佳答案

在类 Unix 操作系统上,包括 Linux,directories are files - 所以你的ListDirectory结果将返回"file"(传统意义上的)和目录的组合。您可以通过检查 IsDirectory 来过滤掉那些:

public List<String> GetFiles(string path)
{
using (SftpClient client = new SftpClient( _host, _port, _username, _password ) )
{
client.Connect();
return client
.ListDirectory( path )
.Where( f => !f.IsDirectory )
.Select( f => f.Name )
.ToList();
}
}

public List<String> GetDirectories(string path)
{
using (SftpClient client = new SftpClient( _host, _port, _username, _password ) )
{
client.Connect();
return client
.ListDirectory( path )
.Where( f => f.IsDirectory )
.Select( f => f.Name )
.ToList();
}
}

(我将返回类型更改为具体的 List<T>,因为如果 ListDirectory 返回一个延迟计算的可枚举对象,那么 using() block 将在操作完成之前使父 SftpClient 对象无效 - 相同你从不从 IQueryable<T> 中返回 using( DbContext ) 的原因)

关于c# - 如何使用 SSH.NET 列出目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50496844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com