我应该如何检查/设置递归获取目录的最大深度级别?

时间:2016-03-28 03:06:01

标签: c# .net winforms

我正在调用给定示例中的方法,我将级别设置为10。 BasePath是一个没有任何子目录的目录,只有一个文件。

private void  _FileInformationWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            GetFilesAndFolders(BasePath, 10);
        }

这是GetFilesAndFolders方法

Tuple<List<string>, List<string>> GetFilesAndFolders(string root, int depth)
        {
            List<string> folders = new List<string>();
            List<string> files = new List<string>();

            try
            {
                foreach (var directory in Directory.EnumerateDirectories(root))
                {
                    folders.Add(directory);
                    if (depth > 0)
                    {
                        var result = GetFilesAndFolders(directory, depth - 1);
                        folders.AddRange(result.Item1);
                        files.AddRange(result.Item2);
                    }
                }

                files.AddRange(Directory.EnumerateFiles(root));
            }
            catch (Exception err)
            {

            }

            return new Tuple<List<string>, List<string>>(folders, files);
        }

最后,我在文件夹计数0和文件计数1中进入此示例。 但是如果我将深度设置为1,我也会得到相同的结果。 如果它是例如BasePath C:\我可以有超过10个级别来深入。

问题是如何设置用户在每种情况下可以设置的最高级别?在第一个示例中,只有1个级别,因此用户将使用10级别调用方法是不合逻辑的。在第二个例子C:\中,用户可以设置10级甚至更高级别。

我该如何处理?

0 个答案:

没有答案