File io 查找目录中除一个子目录外的所有文件的最简单方法?

File io 查找目录中除一个子目录外的所有文件的最简单方法?,file-io,.net-4.0,directory,File Io,.net 4.0,Directory,在.NET中 DirectoryInfo dirInfo = new DirectoryInfo(searchDirectory); FileInfo[] allFiles = dirInfo.GetFiles("*.*", SearchOption.AllDirectories); 将获取所有文件,包括其子目录中的所有文件 如果我想要除一个子目录以外的所有文件呢 我能做到的最简单和/或最有效的方法是什么 我使用的是.NET4.0,c#试试这个: Directo

在.NET中

        DirectoryInfo dirInfo = new DirectoryInfo(searchDirectory);
        FileInfo[] allFiles = dirInfo.GetFiles("*.*", SearchOption.AllDirectories);
将获取所有文件,包括其子目录中的所有文件

如果我想要除一个子目录以外的所有文件呢

我能做到的最简单和/或最有效的方法是什么

我使用的是.NET4.0,c#

试试这个:

DirectoryInfo dirInfo = new DirectoryInfo(searchDirectory);
List<FileInfo> allFiles = new List<FileInfo>();
allFiles.AddRange(dirInfo.GetFiles());

foreach (DirectoryInfo di in dirInfo.GetDirectories())
{
    if (di.Name != "DirIDontWant")
    {
        allFiles.AddRange(di.GetFiles("*.*", SearchOption.AllDirectories));
    }
}
DirectoryInfo dirInfo=newdirectoryinfo(searchDirectory);
List allFiles=新列表();
allFiles.AddRange(dirInfo.GetFiles());
foreach(dirInfo.GetDirectories()中的DirectoryInfo di)
{
if(di.Name!=“DirIDontWant”)
{
allFiles.AddRange(di.GetFiles(“*.*”,SearchOption.AllDirectories));
}
}

正如MSDN文章中所建议的,递归地使用深度优先方法:


IntelliSense和MSDN帮助我解决了这个问题:

List<string> lFiles = new List<string>();
lFiles.AddRange(Directory.GetFiles(lPath, "*", SearchOptions.AllDirectories));
List lFiles=new List();
AddRange(Directory.GetFiles(lPath,“*”,SearchOptions.AllDirectories));

GetFiles函数是在MSDN上定义的。第一个参数是要搜索的目录;第二个参数是过滤器(*是获取所有文件的通配符),第三个参数是一个标志,指示是只获取指定目录中的文件还是所有子目录中的文件。

您是指除一个目录外的所有文件和目录?我的意思是我希望所有文件都包含目录中的所有文件,包括除一个子目录外所有子目录中的所有文件。我相信最后一个参数应为
SearchOption
(非复数)。
List<string> lFiles = new List<string>();
lFiles.AddRange(Directory.GetFiles(lPath, "*", SearchOptions.AllDirectories));