我目前有一个代码,可以扫描给定目录中的文件夹,并将所有内容列出到列表框中。但是,我也想扫描每个文件夹下的文件。我想使用此代码,因为它输出类似文件夹结构的树。我还需要添加什么代码才能获取文件?谢谢!
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-软件-肾上腺素18.3.3-MinimalSetup-180319_web(56)
―斌(3)
-本地化(12)
――― cs(2)
――― da_DK(5)
――― de(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)
――― de(2)
――― el_GR(5)
――― es_ES(5)
――― fi_FI(5)
答案 0 :(得分:1)
类似这样的东西:
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);
}