1

可能重复:
如何递归列出 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

4 回答 4

5

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

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

链接到 MSDN

于 2012-07-16T13:00:44.217 回答
1

传给. SearchOption.AllDirectories_GetFiles()

于 2012-07-16T13:00:04.297 回答
0

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

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

于 2012-07-16T13:00:34.300 回答
0

In the method Directory.GetFiles(...) you can provide a enum-value as third-parameter. The default here is just the top-directory. You can say to search in all subdirectories

于 2012-07-16T13:02:20.780 回答