C# 使用SearchOption.AllDirectory搜索所有目录
下面是我的代码。我已经创建了一个筛选器,用于搜索任何所有图像文件扩展名,但当我的代码运行C# 使用SearchOption.AllDirectory搜索所有目录,c#,C#,下面是我的代码。我已经创建了一个筛选器,用于搜索任何所有图像文件扩展名,但当我的代码运行搜索选项时。AllDirectory似乎正在尝试打开特定路径,而不是搜索我的所有目录 有人帮我找出哪里出了问题吗 string[] filters = { "*.jpg", "*.jpeg", "*.png", "*.gif", "*.bmp" }; var directory = new DirectoryInfo(lblText.Text); var files = new List<FileInf
搜索选项时。AllDirectory
似乎正在尝试打开特定路径,而不是搜索我的所有目录
有人帮我找出哪里出了问题吗
string[] filters = { "*.jpg", "*.jpeg", "*.png", "*.gif", "*.bmp" };
var directory = new DirectoryInfo(lblText.Text);
var files = new List<FileInfo>();
foreach (var filter in filters)
{
var results = directory.GetFiles(filter, SearchOption.AllDirectories);
files.AddRange(results);
}
string[]过滤器={“*.jpg”、“*.jpeg”、“*.png”、“*.gif”、“*.bmp”};
var directory=newdirectoryinfo(lblText.Text);
var files=新列表();
foreach(过滤器中的var过滤器)
{
var results=directory.GetFiles(filter、SearchOption.AllDirectories);
files.AddRange(结果);
}
谢谢你的帮助!:) 我假设
directory
是一个DirectoryInfo
对象,您正在使用它。然后从当前目录返回一个FileInfo[]
,该目录与给定的搜索模式匹配,并搜索所有子目录
因此,DirectoryInfo
的目录路径是根目录
string path = "C:\\myFolder1\\myFolder2";
DirectoryInfo dir = new DirectoryInfo(path);
FileInfo[] files;
files = dir.GetFiles("*.*", SearchOption.AllDirectories);
例如:
DirectoryInfo imageDir = new DirectoryInfo(@"c:\Images");
FileInfo[] allJPGImages = imageDir.GetFiles(".jpg", SearchOption.AllDirectories);
根据您的编辑进行编辑
因此,特定路径是在lblText
中输入/显示的文本。获取具有这些扩展名的所有文件的另一种方法:
string[] filters = { "*.jpg", "*.jpeg", "*.png", "*.gif", "*.bmp" };
List<FileInfo> files = filters
.SelectMany(filter => directory.EnumerateFiles(filter, System.IO.SearchOption.AllDirectories))
.ToList();
string[]过滤器={“*.jpg”、“*.jpeg”、“*.png”、“*.gif”、“*.bmp”};
列表文件=过滤器
.SelectMany(filter=>directory.EnumerateFiles(filter,System.IO.SearchOption.AllDirectory))
.ToList();
在开始处理之前,它不需要将所有文件加载到内存中。当您处理许多文件和目录时,可以更高效。我不确定代码中的过滤器是什么,但下面是一个搜索目录的简单示例
string path = "C:\\myFolder1\\myFolder2";
DirectoryInfo dir = new DirectoryInfo(path);
FileInfo[] files;
files = dir.GetFiles("*.*", SearchOption.AllDirectories);
也许你的道路错了?
但是AllDirectories选项从您指定的路径开始。filter
设置为什么?我已经更新了我的代码窗口。啊,现在我必须问:lblText.Text
的具体值是什么?如果它是“”,那么这将不适用于您(它将只搜索当前工作目录及其子目录)。谢谢。在你的帮助下,我已经解决了这个问题。我想我只是个白痴你应该努力写一个完整的小问题lblText.Text
只是没有信息;您可以轻松地使用字符串文字来代替。可能避免使用var
,因为我们在StackOverflow上没有Intellisense。谢谢。在你的帮助下,我已经解决了这个问题。我想我只是个白痴