获取路径中的所有文件(递归)

use*_*944 0 c#

我写了一个方法,需要找到路径中的所有文件,我想使用递归获取所有文件.这是我目前的方法:

public void doStart(DirectoryInfo dir, string filePattern)
        {
            try
            {
                foreach (FileInfo fileInfo in dir.GetFiles(filePattern))
                {
                    if (fileFound != null)
                    {
                        fileFound(fileInfo);
                    }
                }
            }
            catch (Exception)
            {

            }

            try
            {
                foreach (DirectoryInfo dirInfo in dir.GetDirectories())
                {
                    doStart(dirInfo, filePattern);
                }
            }
            catch (Exception)
            {

            }
        }

        public void Start(string path, string filePattern)
        {
            doStart(new DirectoryInfo(path), filePattern);
        }
Run Code Online (Sandbox Code Playgroud)

是否有更好的方法来编写这种递归或这是否足够好?

Ste*_*fan 7

尝试这样的事情:

string[] filePaths = Directory.GetFiles(@dir, "*.filetype", SearchOption.AllDirectories);
Run Code Online (Sandbox Code Playgroud)

这将以递归方式查看目录,查找具有特定文件类型('.filetype')的所有文件,并返回包含所有找到的文件的字符串数组.

此外,我建议不要使用空的catch块,因为如果出现问题,您的应用程序将不会让您知道.要么显示消息框(或类似的东西),要么将其记录到数据库或其他东西.

此外,如果子目录中有子目录,您的DoStart()方法会做什么?从我所看到的,我会说它只搜索1个子级.