如何扫描文件夹和子文件夹中的所有文件? [复制]
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 存储桶
如何用Grunt对不同文件夹和子文件夹中的文件进行重命名,并动态地标注版本号?
使用文件复制文件夹和子文件夹,但使用Windows命令行跳过根文件夹中的文件