为什么我无法用递归代码读取子目录

时间:2019-10-20 09:07:59

标签: c# asp.net .net c#-4.0

This error showed up when i run my recursive to read all subdir i dont know how to solve this

这是我的递归代码

    private void recursiveSubDir(dynamic workingdirectories)
    {

        var targetDir = workingdirectories;
        foreach (string _selectedDir in targetDir)
        {

            var targetFile = Directory.GetFiles(_selectedDir);
            foreach (var selectedFile in targetFile)
            {
                string enc_selectedFile = GetMD5FromFile(selectedFile);
                string[] md5text = File.ReadAllLines("md5 encryptor.txt");
                foreach (string md5textcheck in md5text)
                {
                    if (enc_selectedFile.Contains(md5textcheck))
                    {
                        virus = virus + 1;
                    }
                }

            }
            MessageBox.Show(_selectedDir);
            recursiveSubDir(_selectedDir);
        }
    }

这就是我所说的递归

try{ string[] md5text = File.ReadAllLines("md5 encryptor.txt");
                string[] files = Directory.GetFiles(lokdirek);
                var dirs = Directory.GetDirectories(lokdirek, "*", SearchOption.TopDirectoryOnly).Where(d => !isexcluded(_excludeDirectories, d));

                int directoryCount = System.IO.Directory.GetDirectories(lokdirek).Length;
                recursiveSubDir(dirs); }

1 个答案:

答案 0 :(得分:0)

检查工作目录的类型。实际代码(您发送图片的代码)与您发布的代码略有不同。图片中是这样:

foreach (var _selectedDir in targetDir)

因此有var而不是string,然后我们不确定_selectedDir实际上是字符串。它可以包含例如对象,这将产生类似的错误。如果您修复此问题,使上面的行与您发布的行相似,并且在运行时得到InvalidCastException,那么我很确定这就是问题所在。