我试图通过递归搜索任意目录来返回 FileInfo 类型的列表。但是,在我的 main() 方法中,当我检查 FoundFiles 的计数时,它是 0,这意味着我返回了一个空对象。请参阅下面的代码:
using System;
using System.IO;
using System.Collections.Generic;
class FindExtensions
{
private static List<FileInfo> SearchFileSystem(DirectoryInfo DirInfo, List<FileInfo> FileList)
{
List<FileInfo> FileInfoList = new List<FileInfo>();
try
{
foreach (DirectoryInfo SubdirInfo in DirInfo.GetDirectories())
{
SearchFileSystem(SubdirInfo, FileList);
}
}
catch
{
// do some stuff
}
try
{
foreach (FileInfo File in DirInfo.GetFiles())
{
FileInfoList.Add(File);
}
}
catch
{
// do some stuff
}
foreach (FileInfo f in FileInfoList)
{
Console.WriteLine(f.FullName);
}
return FileInfoList;
}
static void Main()
{
DirectoryInfo dir_info = new DirectoryInfo(@"C:\<whatever>");
List<FileInfo> file_list = new List<FileInfo>();
List<FileInfo> FoundFiles = SearchFileSystem(dir_info, file_list);
Console.WriteLine("Count is: " + FoundFiles.Count);
//^^^^ this returns 0...why is it empty?
Console.WriteLine("This is the debug mode. Press key to restart");
Console.ReadKey();
}
}
我在 SearchFileSystem 方法中添加了一个 for 循环,以在返回之前检查 FileInfoList 的内容,它将包含文件。但是,它不包含任何主要内容。我对 C# 的细微差别不熟悉,所以如果这很容易,我深表歉意。
此外,值得注意的是,如果我使用带字符串的 List 类型而不是 FileInfo,则效果很好。如果可能,希望使用 FileInfo 类型的列表。
谢谢。