0
 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# 编码。

4

2 回答 2

1

要解决此问题,请使用ref而不是out函数的最后一个参数,并且不要在函数内重新创建它。而是在调用者函数中创建一次列表并将其作为 ref 参数发送到此函数。Directory.GetFiles()但是已经完成了您想要实现的目标。

于 2013-10-01T02:55:08.343 回答
1

您需要将初始化列表传递给函数的第一次调用。

但似乎您正在目录中搜索所有具有模式的文件。您可以使用Directory.GetFiles接受SearchOption的重载,您可以将其指定为 AllDirectories 以获取所有子文件夹中的文件。

于 2013-10-01T02:56:36.317 回答