如何扫描文件夹和子文件夹中的所有文件?
可能重复:
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)
{
}
}
}
此代码scaning只,但不是在子文件夹的根文件夹中的所有文件。如何更改此代码,以便它可以扫描文件夹和子文件夹中的所有文件?
由于您使用Directory类,只需使用SearchOption参数上您来电的GetFiles像这样:
Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.*",SearchOption.AllDirectories).ToList();
谢谢你的回答... – mapix 2012-07-17 00:41:04
请大家看看SearchOption
这里http://msdn.microsoft.com/en-us/library/ms143448.aspx
,让您做到:Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.*",SearchOption.AllDirectories);
谢谢你的回答... – mapix 2012-07-17 00:41:35
在该方法中Directory.GetFiles(......),你可以provi将枚举值作为第三参数。这里的默认值只是顶级目录。您可以说要在所有子目录中搜索
请注意System.IO.File/Directory不处理长路径 - 您可以尝试开源库http://zetalongpaths.codeplex.com/。如果你不想重新发明轮子,你可以使用商业工具; appliedninggo.com - – 2014-01-02 08:12:43
使用正则表达式的文件Sanning文件是一个非常计算密集型任务! – 2014-01-02 08:23:28