Перечисление файлов в основном каталоге и подкаталогах - PullRequest
0 голосов
/ 04 июля 2019

В настоящее время у меня есть код, который сканирует данный каталог на наличие папок и выводит все в список. Тем не менее, я также хотел бы сканировать файлы в каждой папке. Я хотел бы использовать этот код, поскольку он выводит древовидную структуру папок. Что мне нужно добавить в мой код, чтобы также получить файлы? Спасибо!

private void ScanSelectedFolder(String prefix, String path)
{

    try
    {
        DirectoryInfo di = new DirectoryInfo(path);
        foreach (var dir in new DirectoryInfo(path).GetDirectories("*", SearchOption.TopDirectoryOnly))
        {
            listBox1.Invoke((MethodInvoker)delegate { 
                listBox1.Items.Add(prefix + dir.Name + " (" + dir.Name.Length.ToString() + ")   "); });
                ScanFolder(prefix + "―", dir.FullName);
            }
        }
        catch
        {
            if (!this.IsDisposed)
            {
                listBox1.Invoke((MethodInvoker)delegate { listBox1.Items.Add("Access Denied to : " + path); });
            }
        }
    }
}

Выход:

Radeon-Software-Adrenalin-18.3.3-MinimalSetup-180319_web (56)
InBin (3)
Локализация (12)
――― cs (2)
――― da_DK (5)
――― де (2)
――― el_GR (5)
――― es_ES (5)
――― fi_FI (5)
――― fr_FR (5)
――― hu_HU (5)
――― it_IT (5)
―――Я (2)
O ko_KR (5)
――― nl_NL (5)
――― нет (2)
――― пл (2)
――― pt_BR (5)
――― ru_RU (5)
V sv_SE (5)
――― й (2)
――― tr_TR (5)
――― zh_CN (5)
――― zh_TW (5)
InBin64 (5)
Локализация (12)
――― cs (2)
――― da_DK (5)
――― де (2)
――― el_GR (5)
――― es_ES (5)
――― fi_FI (5)

1 Ответ

1 голос
/ 04 июля 2019

Примерно так:

DirectoryInfo di = new DirectoryInfo(path);
foreach (var dir in new DirectoryInfo(path).GetDirectories("*", SearchOption.TopDirectoryOnly))
{
    listBox1.Invoke((MethodInvoker)delegate { listBox1.Items.Add(prefix + dir.Name + " (" + dir.Name.Length.ToString() + ")   "); });

    foreach (FileInfo fileInfo in dir.GetFiles())
    {
        listBox1.Invoke((MethodInvoker) delegate { listBox1.Items.Add(prefix + fileInfo.Name); });
    }
    ScanSelectedFolder(prefix + "―", dir.FullName);
}
...