我想扫描一个目录(“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
在我尝试这些行的地方,它们都返回“NotFound DirectoryException”:
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);
}
}
}
要获取根文件夹(“C:/ test /”)的内容,请以这种方式使用提供程序:
var contents = provider.getDirectoryContents("")
然后,你必须在contents
中枚举结果,并为每个人做你想做的事。
文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/file-providers?view=aspnetcore-2.1