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

时间:2012-07-16 12:57:31

标签: c#

  

可能重复:
  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)
        {
        }
    }
}

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

4 个答案:

答案 0 :(得分:3)

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

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

Link to MSDN

答案 1 :(得分:1)

SearchOption.AllDirectories传递给GetFiles()

答案 2 :(得分:0)

请查看SearchOption此处http://msdn.microsoft.com/en-us/library/ms143448.aspx

这使您可以执行:Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.*",SearchOption.AllDirectories);

答案 3 :(得分:0)

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

相关问题