[英]How do I append List<string> in the following recursive function
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#编码。
要解决此问题,请使用ref
而不是out
作为函数的最后一个参数,并且不要在函数内重新创建它。 而是在调用函数中创建一次列表,并将其作为ref参数发送到此函数。 然而, Directory.GetFiles()
已经完成了你想要实现的目标。
您需要将初始化列表传递给函数的第一次调用。
但好像你正在目录中搜索带有模式的所有文件。 您可以使用接受SearchOption的 Directory.GetFiles
重载,您可以将其指定为AllDirectories以获取所有子文件夹中的文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.