c# - .NET Core:IFileProvider.GetDirectoryContents 递归不起作用
问题描述
我想扫描一个目录(“C:/test”)并递归获取所有文件.pdf我创建一个这样的提供程序:
IFileProvider provider = new PhysicalFileProvider("C:/test"); // using config in my code and also tried with "C:/test/"
我在目录和子目录中放置了一些pdf
有一个带有此路径的文件: C:/test/pdf59.pdf 另一个带有 C:/test/testComplexe/pdf59.pdf
在我尝试这些行的地方,它们都返回 "NotFoundDirectoryException" :
provider.getDirectoryContents(@"**")
provider.getDirectoryContents(@"*")
provider.getDirectoryContents(@"*.*")
provider.getDirectoryContents(@"**.*")
provider.getDirectoryContents(@"pdf59.pdf")
provider.getDirectoryContents(@"*.pdf")
此行例外:
provider.getDirectoryContents(@"testComplexe")
我如何查询这些递归目录和文件?谢谢
解决方案
您可以编写自己的递归函数。
var files = new List<IFileInfo>();
GetFiles("C:/Tests", files);
private void GetFiles(string path, ICollection<IFileInfo> files)
{
IFileProvider provider = new PhysicalFileProvider(path);
var contents = provider.GetDirectoryContents("");
foreach (var content in contents)
{
if (!content.IsDirectory && content.Name.ToLower().EndsWith(".pdf"))
{
files.Add(content);
}
else
{
GetFiles(content.PhysicalPath, files);
}
}
}
推荐阅读
- sql - 您可以在 BigQuery 中使用逻辑运算符根据当前日期选择不同的日期吗?
- r - R在关键字之后提取特定单词
- flutter - 如何区分颤振中的复选框列表
- blogger - 有什么方法可以使用 www.blogname,blogspot.com 使我的 blogspot 页面可访问
- gatsby - 如何将用于生产的图像从资产复制到公共/资产
- python - 如何丰富与其他数据字段的 viur 关系
- voice - 谷歌语音助手从网络上拾取音频
- dynamics-crm - D365 中实体的托管组件是否存在在某些系统更新后发生更改的风险?
- python - 处理 csv 文件 - 这个简单的代码有什么问题?
- sql - 喜欢和计数使 sql server 处理器 100%