【发布时间】:2019-01-13 05:55:13
【问题描述】:
我只是 VS、C# 和 XAML 的新手。
我正在构建这个项目,我想在我的D;\ 驱动器中显示所有图像。所以我实际上是从这个question 得到这个代码的,幸运的是我可以毫无困难地工作。我可以告诉代码正在运行,因为我的应用程序现在需要大约 2 分钟才能启动,因此由于搜索到的图像而被延迟
public static IEnumerable<string> GetDirectoryFiles(string rootPath, string patternMatch, SearchOption searchOption)
{
var foundFiles = Enumerable.Empty<string>();
if (searchOption == SearchOption.AllDirectories)
{
try
{
IEnumerable<string> subDirs = Directory.EnumerateDirectories(rootPath);
foreach (string dir in subDirs)
{
foundFiles = foundFiles.Concat(GetDirectoryFiles(dir, patternMatch, searchOption));
}
}
catch (UnauthorizedAccessException) { }
catch (PathTooLongException) { }
}
try
{
foundFiles = foundFiles.Concat(Directory.EnumerateFiles(rootPath, patternMatch));
}
catch (UnauthorizedAccessException) { }
return foundFiles;
}
我用这行代码调用函数GetDirectoryFiles
string[] filePaths = {};
string[] extObj = { "*.JPG", ".JPEG", ".PNG", ".GIF", ".BMP*.jpg", ".jpeg", ".png", ".gif", ".bmp" };
foreach(var ext in extObj)
filePaths.Concat(GetDirectoryFiles(@"D:\", ext, SearchOption.AllDirectories));
System.Diagnostics.Debug.WriteLine(filePaths.Length);
但是我遇到了一个问题...当filePaths.Length 输出时,我得到0。我实际上不知道为什么,但我知道我的D:\ 驱动器中至少有 4000 个.jpg 图像,所以我不应该得到 0。
简而言之我的问题:我想在我的D:\ 驱动器中加载所有图像,不包括返回UnauthorizedAccessException 和PathTooLongException 错误的路径,参考我之前的question
【问题讨论】:
-
您无缘无故地传递了两次相同的文件扩展名:搜索模式不区分大小写。您将获得两次相同的文件。这里还有一个类型:
".BMP*.jpg"。看看这是否真的是一个错字。
标签: c#