列出主目录和子目录中的文件

Listing files in main directory and subdirectories

我目前有一个代码可以扫描给定目录中的文件夹并将所有内容列在列表框中。但是,我也想扫描每个文件夹下的文件。我想使用这段代码,因为它输出一个树状文件夹结构。我需要在我的代码中添加什么才能获取文件?谢谢!

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)
―斌 (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)
―――ja (2)
―――ko_KR (5)
―――nl_NL (5)
―――没有(2)
―――pl (2)
―――pt_BR (5)
―――ru_RU (5)
―――sv_SE (5)
―――第(2)
―――tr_TR (5)
―――zh_CN (5)
―――zh_TW (5)
―Bin64 (5)
――本地化 (12)
―――cs(2)
―――da_DK (5)
―――德(2)
―――el_GR (5)
―――es_ES (5)
―――fi_FI (5)

像这样:

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