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

メソッド Directory.GetFiles(...) では、列挙値を 3 番目のパラメーターとして指定できます。ここでのデフォルトは、最上位ディレクトリです。すべてのサブディレクトリを検索すると言うことができます

于 2012-07-16T13:02:20.780 に答える