C# 在目录中搜索
所以基本上我有一个程序可以搜索指定目录中的所有文件和目录。我怎样才能改进这个程序,当我指定一个目录时,它会越来越深入到所说的指定目录中,直到它到达末尾,没有更多的目录,只有文件C# 在目录中搜索,c#,file,directory,C#,File,Directory,所以基本上我有一个程序可以搜索指定目录中的所有文件和目录。我怎样才能改进这个程序,当我指定一个目录时,它会越来越深入到所说的指定目录中,直到它到达末尾,没有更多的目录,只有文件 using System; using System.Windows.Forms; using System.Drawing; using System.IO; class DemoFiles : ConsoleForm { OpenFileDialog ofd = new OpenFileDialog();
using System;
using System.Windows.Forms;
using System.Drawing;
using System.IO;
class DemoFiles : ConsoleForm
{
OpenFileDialog ofd = new OpenFileDialog();
FolderBrowserDialog fbd = new FolderBrowserDialog();
public DemoFiles() :
base("Eksperimentai su failais", Color.Blue, 800, 600)
{
CreateButtons();
}
private void CreateButtons()
{
AddButton("File", (o, e) => {
if (ofd.ShowDialog() == DialogResult.OK)
{
var sr = new StreamReader(ofd.FileName);
WriteLine(ofd.FileName);
WriteLine(sr.ReadToEnd());
}
});
AddButton("Folder", (o, e) => {
if (fbd.ShowDialog() == DialogResult.OK)
{
WriteLine(">>>>" + fbd.SelectedPath);
string[] dirs = Directory.GetDirectories(fbd.SelectedPath);
WriteLine("*** Directories");
Array.ForEach(dirs, WriteLine);
WriteLine("--- Files");
string[] files = Directory.GetFiles(fbd.SelectedPath);
Array.ForEach(files, WriteLine);
Directory.SetCurrentDirectory(fbd.SelectedPath);
//foreach (string directory in dirs)
//{
// foreach (string file in files)
// {
// if (directory.Contains(file))
// {
// Array.ForEach(files, WriteLine);
// Directory.SetCurrentDirectory(fbd.SelectedPath);
// }
// }
//}
}
});
}
}
您可以自己使用递归实现,也可以使用
GetFiles
函数的searchoption参数:
表1
所有目录1在搜索操作中包括当前目录及其所有子目录。此选项包括重新分析点,例如搜索中已安装的驱动器和符号链接 类似这样的东西-(我没有测试过)
DirectoryInfo[]目录=
di.GetDirectories(“*”,SearchOption.AllDirectories);
另请参见此答案:使用此选项获取所有文件:
string[] filePaths = Directory.GetFiles(@"your root directory path", "*.*", SearchOption.AllDirectories);
foreach (var file in filePaths)
{
// your logic.
}
如果只需要文本文件,请将“*.*”
更改为“*.txt”