如何使用SSH.NET在Ubuntu机器上列出目录?
SFTP 目录列表实现方案
嘿,刚好你已经有了文件列表的基础代码,只需要对返回的SftpFile集合做个简单过滤就能拿到目录列表啦!
核心思路
SftpClient.ListDirectory()返回的每个SftpFile对象都自带IsDirectory属性,通过这个属性就能判断当前项是不是目录。另外通常我们会排除掉默认的.(当前目录)和..(上级目录)这两个条目,避免返回无用内容。
实现代码
public IEnumerable<string> GetDirectories(string path) { using (var sftpClient = new SftpClient(_host, _port, _username, _password)) { sftpClient.Connect(); var directoryItems = sftpClient.ListDirectory(path); // 筛选出真正的目录,排除.和.. return directoryItems.Where(item => item.IsDirectory && !item.Name.Equals(".") && !item.Name.Equals("..")) .Select(item => item.Name); } }
补充说明
如果你想一次性获取指定路径下的所有文件和目录(并区分类型),也可以扩展一个方法返回包含类型信息的结构,但针对你现在的需求,上面的方法完全够用啦。
内容的提问来源于stack exchange,提问作者Hozuki Ferrari
相关产品推荐
相关产品推荐

