我有一个自定义对象,其中包含返回根
中所有目录和文件名的方法string[] dirlist = obj.GetDirectories();
//which returns all dir names in root
string[] filelist = obj.GetFiles();
//which return all file names in root
我无法修改这些方法。一旦我得到了dirlist,我如何获得其中所有子目录的列表以及子目录中的文件,忽略安全异常。它可以嵌套到多个级别。 .NET 4中的任何内容?
更新:string [] dirList也可以读作List dirlist。请提供一个使用.NET最新功能的解决方案
DirectoryOne
- SubDirOne
- SubDirTwo
- FileOne
- FileTwo
- SubDirThree
DirectoryTwo
DirectoryOne
答案 0 :(得分:9)
已经有内置的.NET方法来执行此操作:
// get all files in folder and sub-folders
Directory.GetFiles(path, "*", SearchOption.AllDirectories);
// get all sub-directories
Directory.GetDirectories(path, "*", SearchOption.AllDirectories);
不知怎的,我觉得这不是你想要的解决方案。
<强>更新强> 我想我可能知道你要问的是什么,因为你把它标记为LINQ。如果要获取给定目录列表的所有子目录和子文件夹的列表,可以使用以下代码:
// get all files given a collection of directories as a string array
dirList.SelectMany(x => Directory.GetFiles(x, "*", SearchOption.AllDirectories));
// get all sub-directories given a collection of directories as a string array
dirList.SelectMany(x => x.Directory.GetDirectories(x, "*", SearchOption.AllDirectories));
答案 1 :(得分:0)
foreach(string dir in Directory.GetDirectories("c:\","",SearchOption.AllDirectories))
{
Console.Writeline(dir);
foreach(string file in Directory.GetFiles(dir))
{
Console.Writline(file);
}
}
这将打印C:\
下的所有目录,然后打印每个目录中的所有文件。
这有帮助吗?