如何扫描文件夹和子文件夹中的所有文件? [复制]

Posted

技术标签:

【中文标题】如何扫描文件夹和子文件夹中的所有文件? [复制]【英文标题】:How To Scan All File in Folder and Subfolder? [duplicate] 【发布时间】:2012-07-15 07:56:35 【问题描述】:

可能重复:How to recursively list all the files in a directory in C#?

如何扫描文件夹和子文件夹中的所有文件?

这是我的代码:

private void button1_Click(object sender, EventArgs e)

    folderBrowserDialog1.ShowDialog();
    label2.Text = folderBrowserDialog1.SelectedPath;
    viruses = 0;
    progressBar1.Value = 0;
    label1.Text+= viruses.ToString();
    listBox1.Items.Clear();


private void btnScan_Click_1(object sender, EventArgs e)


    List<string> search = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.*").ToList();
    progressBar1.Maximum = search.Count;
    //foreach (Directory.GetDirectories.search))

    foreach(string item in search)
    
        try
        
            StreamReader stream = new StreamReader(item);
            string read = stream.ReadToEnd();
            foreach(string st in viruslist)
            
                if(Regex.IsMatch(read,st));
                
                    viruses+=1;
                    label1.Text+= listBox1.Items.Count;
                    listBox1.Items.Add(item);
                
                progressBar1.Increment(1);
            
        
        catch(Exception ex)
        
        
    

此代码仅扫描根文件夹中的所有文件,而不扫描子文件夹中的所有文件。如何更改此代码以便它也可以扫描文件夹和子文件夹中的所有文件?

【问题讨论】:

请注意 System.IO.File/Directory 不处理长路径 - 您可以尝试 Open Source Library zetalongpaths.codeplex.com。如果您不想重新发明***,可以使用一些商业工具; Appliedalgo.com - 使用正则表达式逐个文件清理文件是一项计算量很大的任务! 【参考方案1】:

由于您使用的是 Directory 类,因此只需在调用 GetFiles 时使用 SearchOption 参数即可:

Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.*",SearchOption.AllDirectories).ToList();

Link to MSDN

【讨论】:

【参考方案2】:

SearchOption.AllDirectories 传递给GetFiles()

【讨论】:

【参考方案3】:

请看SearchOption这里http://msdn.microsoft.com/en-us/library/ms143448.aspx

这使您能够做到:Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.*",SearchOption.AllDirectories);

【讨论】:

【参考方案4】:

在 Directory.GetFiles(...) 方法中,您可以提供一个枚举值作为第三个参数。这里的默认值只是顶层目录。你可以说搜索所有子目录

【讨论】:

以上是关于如何扫描文件夹和子文件夹中的所有文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 gsutil 将所有文件和子文件夹从当前目录复制/移动到 Google Cloud Storage 存储桶

VBA获取某文件夹下所有文件和子文件目录的文件

如何用Grunt对不同文件夹和子文件夹中的文件进行重命名,并动态地标注版本号?

使用文件复制文件夹和子文件夹,但使用Windows命令行跳过根文件夹中的文件

如何从 Pentaho Kettle 读取所有文件夹和子文件夹 使用 SFTP 步骤获取文件

迭代文件夹和子文件夹/文件,并将电子表格数据复制到存档表