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));
}
}
我正在尝试使用此递归调用获取以指定目录(路径)为根的所有文件。特别是我想填写List&lt;&gt;结构,包含pwd及其子目录中的所有文件。但每次调用递归函数时,List&lt;&gt;结构获取子目录的文件,以及先前的文件被覆盖。有没有什么方法可以在每次执行递归调用时附加新数据? 我在c#编码。
答案 0 :(得分:1)
要解决此问题,请使用ref
代替out
作为函数的最后一个参数,不要在函数内重新创建它。而是在调用函数中创建一次列表,并将其作为ref参数发送到此函数。 Directory.GetFiles()
已经做了你想要实现的目标。
答案 1 :(得分:1)
您需要将初始化列表传递给函数的第一次调用。
但好像你在目录中搜索带有模式的所有文件。
您可以使用接受Directory.GetFiles
的SearchOption重载,您可以将其指定为AllDirectories以获取所有子文件夹中的文件。