Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在目录中搜索_C#_File_Directory - Fatal编程技术网

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”