Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用SearchOption.AllDirectory搜索所有目录_C# - Fatal编程技术网

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。谢谢。在你的帮助下,我已经解决了这个问题。我想我只是个白痴