C# 如何从精确的子目录中获取文件

C# 如何从精确的子目录中获取文件,c#,getfiles,C#,Getfiles,我已经设法从“根”文件夹子目录中获取文件,但我也从这些子目录directories2获取文件,我不想这样做 示例:RootDirectory>子目录(需要的文件)>directories2(不需要的文件) 我使用了以下代码: public void ReadDirectoryContent() { var s1 = Directory.GetFiles(RootDirectory, "*", SearchOption.AllDirectories); { for (int i =

我已经设法从“根”文件夹子目录中获取文件,但我也从这些子目录directories2获取文件,我不想这样做

示例:
RootDirectory>子目录(需要的文件)>directories2(不需要的文件)

我使用了以下代码:

public void ReadDirectoryContent() 
{
  var s1 = Directory.GetFiles(RootDirectory, "*", SearchOption.AllDirectories);
  {
  for (int i = 0; i <= s1.Length - 1; i++)
  FileInfo f = new FileInfo(s1[i]); 
  . . . etc
  }
}
public void ReadDirectoryContent()
{
var s1=Directory.GetFiles(RootDirectory,“*”,SearchOption.AllDirectories);
{

对于(int i=0;i您必须将
SearchOption.AllDirectories
更改为
SearchOption.TopDirectoryOnly
,因为第一个选项意味着它从当前目录和所有子目录获取文件

编辑:


op希望在直接子目录中搜索,而不是在根目录中搜索 目录

public void ReadDirectoryContent()
{
var subdirectories=Directory.GetDirectories(RootDirectory);
列表文件=新列表();
for(int i=0;i<子目录.Length;i++)
files.Concat(Directory.GetFiles(子目录[i],“*”,SearchOption.TopDirectoryOnly));
}
试试这个:

var filesInDirectSubDirs = Directory.GetDirectories(RootDirectory)
    .SelectMany(d=>Directory.GetFiles(d));

foreach(var file in filesInDirectSubDirs)
{
    // Do something with the file
    var fi = new FileInfo(file);
    ProcessFile(fi);
}

想法是首先选择第一级子目录,然后使用方法“聚合”所有文件

是否也要排除某些目录?不,我要所有目录op要在直接子目录中搜索,而不是根目录)我尝试了你的建议,但得到的只是子目录长度(数字)。我想要子目录中的文件长度。我尝试了此方法,但使用.Count方法后无法获取文件长度
SelectMany
返回
IEnumerable
,该方法不提供
Length
属性。您可以使用简单的
foreach
构造,而不是
for
循环。检查我编辑的代码在那之后我对数组有问题。你有什么建议吗?我编辑/添加了我的代码。你有什么问题?请注意,当使用SelectMany时,没有更多的数组,而是一个可枚举的。这就是为什么foreach代替foreachI在程序的另一部分对数组有问题,wh在此我也使用了这些值。谢谢你的帮助!
var filesInDirectSubDirs = Directory.GetDirectories(RootDirectory)
    .SelectMany(d=>Directory.GetFiles(d));

foreach(var file in filesInDirectSubDirs)
{
    // Do something with the file
    var fi = new FileInfo(file);
    ProcessFile(fi);
}