嵌套foreach循环添加DirectoryInfo.GetDirectories和GetFiles到一个数组
本文关键字:数组 一个 GetFiles 循环 foreach 添加 DirectoryInfo GetDirectories 嵌套 | 更新日期: 2023-09-27 18:18:25
如何遍历特定文件路径中的每个文件夹,然后遍历找到的每个文件夹中的每个文件?
DirectoryInfo dir = new DirectoryInfo(@"C:'Path");
foreach (DirectoryInfo folders in dir.GetDirectories())
foreach (DirectoryInfo files in folders.GetFiles())
如果您要的是目录中的pdf列表,并且它是子目录,您可以这样做。
DirectoryInfo di = new DirectoryInfo("c:''output");
FileInfo[] files = di.GetFiles("*.pdf", SearchOption.AllDirectories);
foreach (var fileInfo in files)
{
// do whatever you need
}
第二个foreach
上的分号可能会使您感到悲伤,否则您的代码只需稍加修改即可正常工作。
DirectoryInfo dir = new DirectoryInfo(@"C:'Path");
foreach (DirectoryInfo folder in dir.GetDirectories())
{
foreach (FileInfo file in folder.GetFiles())
{
// do stuff with file
}
}
你的题目和正文不完全匹配。我想你应该把所有子目录下的所有文件放到一个数组中。
一种方法是:
DirectoryInfo dir = new DirectoryInfo(@"C:'Path");
List<FileInfo> files = new List<FileInfo>();
foreach (DirectoryInfo folder in dir.GetDirectories())
foreach (FileInfo file in folder.GetFiles())
{
files.Add(file);
}
// files contains your list of files
DirectoryInfo dir = new DirectoryInfo(@"C:'Path");
foreach (DirectoryInfo folders in dir.GetDirectories())
{
foreach (FileInfo files in folders.GetFiles())
{
//Do something
}
}
Pfft.
foreach(var file in new DirectoryInfo(@"C:'Path")
.GetDirectories()
.SelectMany(x => x.GetFiles()))
// linq baby
(顺便说一句,使用DI和FI,两个更有用但被忽略的框架类)