如何在以下递归函数中附加列表<字符串>
本文关键字:列表 字符串 递归函数 | 更新日期: 2023-09-27 18:33:34
class FileSetGenerator
{
public static void FileSetGen(string[] arg, string path, string pattern, oout List<string> files)
{
int count = 0;
files = new List<string>();
if(arg.Contains("/R"))
{
Console.WriteLine("Called");
files.AddRange(Directory.GetFiles(path, pattern));
count++;
//List<string> dummy = new List<string>();
foreach (string file in files)
Console.WriteLine(file);
string[] dirs = Directory.GetDirectories(path);
foreach (string dir in dirs)
FileSetGen(arg, dir, pattern, out files);
}
else
files.AddRange(Directory.GetFiles(path, pattern));
}
}
我正在尝试使用此递归调用将所有文件植根于指定的目录(路径)。因此,我特别想用 pwd 中存在的所有文件及其子目录中填充 List<> 结构。但是每次调用递归函数时,List<> 结构都会被子目录的文件覆盖,以前的文件会被覆盖。有什么方法可以在每次执行递归调用时附加新数据?我正在用 c# 编码。
您需要将初始化列表传递给函数的第一次调用。
但似乎您正在目录中搜索所有具有模式的文件。您可以使用接受 SearchOption Directory.GetFiles
重载,您可以将其指定为 AllDirectory 来获取所有子文件夹中的文件。
若要解决此问题,请使用 ref
而不是 out
作为函数的最后一个参数,并且不要在函数内重新创建它。而是在调用方函数中创建一次列表,并将其作为 ref 参数发送到此函数。 然而,Directory.GetFiles()
已经完成了你想要实现的目标。