Поиск в справочнике - PullRequest
0 голосов
/ 06 марта 2020

Так что в основном у меня есть программа, которая ищет все файлы и каталоги в указанном каталоге. Как я могу улучшить эту программу, чтобы, когда я указываю каталог, он все глубже и глубже проникает в указанный каталог, пока не достигнет конца, и больше не будет каталогов, только файлы.

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);
                //        }
                //    }
                //}
            }
        });
    }

}

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

Используйте это, чтобы получить все файлы:

string[] filePaths = Directory.GetFiles(@"your root directory path", "*.*", SearchOption.AllDirectories);
foreach (var file in filePaths)
{
    // your logic.
}

Измените "*.*" на "*.txt", если вы хотите только текстовые файлы.

0 голосов
/ 06 марта 2020

Вы можете сделать это самостоятельно с помощью рекурсии или использовать параметр поиска функции GetFiles:

https://docs.microsoft.com/en-us/dotnet/api/system.io.searchoption?view=netframework-4.8

ТАБЛИЦА 1 AllDirectories 1
Включает текущий каталог и все его подкаталоги в операцию поиска. Эта опция включает точки повторного анализа, такие как смонтированные диски и символические ссылки c в поиске.

Примерно так - (я не проверял это).

DirectoryInfo[] directories = 
            di.GetDirectories("*", SearchOption.AllDirectories);

Также см. Этот ответ : { ссылка }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...