我想知道是否有人知道更干净的方法来做到这一点。我有一段程序将列出包含文件的所有输入目录。列出目录中的所有子目录和文件
但是,为此,我手动将每个输入目录存储为一个变量,并将它们用作搜索目标。
我想知道是否有更干净的方法来做到这一点?
例如,伪代码,我有我的头,此刻是:
- 开始在目录
Date
,If FolderName == "Input"
那么所有子文件夹存储阵列InputSubs
- 对于每个文件夹中
InputSubs
,如果没有子文件夹包含在InputSub
和没有文件被包含在InputSubs
然后移动到下一个 - 如果
InputSubs
包含一个子目录,然后存储所有子目录在阵列InputSubs2
和米奥雅纳到下一个 - 如果
InputSubs
包含在阵列的文件,存储DirPath
和FileName
作为字符串InputFiles
- 重复
InputSubs
为InputSubs2
输入文件夹变为最深为2名的目录的过程。
输入文件夹结构的示例位于附加图像中。
我目前使用的代码的一个例子是如下。
ListBox1.Items.Clear();
if (Directory.GetFiles(SalesInputFilePath + ResourceDetails.InputFolders(FormDMM, EH, ObjApp, Modules, "AustraliaFolder")).Length != 0)
{
ListBox1.Items.Add(Directory.GetFiles(SalesInputFilePath + ResourceDetails.InputFolders(FormDMM, EH, ObjApp, Modules, "AustraliaFolder"))[0]);
}
if (Directory.GetFiles(SalesInputFilePath + ResourceDetails.InputFolders(FormDMM, EH, ObjApp, Modules, "DE1Folder")).Length != 0)
{
ListBox1.Items.Add(Directory.GetFiles(SalesInputFilePath + ResourceDetails.InputFolders(FormDMM, EH, ObjApp, Modules, "DE1Folder"))[0]);
}
if (Directory.GetFiles(SalesInputFilePath + ResourceDetails.InputFolders(FormDMM, EH, ObjApp, Modules, "PL1Folder")).Length != 0)
{
ListBox1.Items.Add(Directory.GetFiles(SalesInputFilePath + ResourceDetails.InputFolders(FormDMM, EH, ObjApp, Modules, "PL1Folder"))[0]);
}
if (Directory.GetFiles(SalesInputFilePath + ResourceDetails.InputFolders(FormDMM, EH, ObjApp, Modules, "EuropeFolder")).Length != 0)
{
ListBox1.Items.Add(Directory.GetFiles(SalesInputFilePath + ResourceDetails.InputFolders(FormDMM, EH, ObjApp, Modules, "EuropeFolder"))[0]);
}
if (Directory.GetFiles(SalesInputFilePath + ResourceDetails.InputFolders(FormDMM, EH, ObjApp, Modules, "fr1Folder")).Length != 0)
{
ListBox1.Items.Add(Directory.GetFiles(SalesInputFilePath + ResourceDetails.InputFolders(FormDMM, EH, ObjApp, Modules, "fr1Folder"))[0]);
}
if (Directory.GetFiles(SalesInputFilePath + ResourceDetails.InputFolders(FormDMM, EH, ObjApp, Modules, "FranceFolder")).Length != 0)
{
ListBox1.Items.Add(Directory.GetFiles(SalesInputFilePath + ResourceDetails.InputFolders(FormDMM, EH, ObjApp, Modules, "FranceFolder"))[0]);
}
if (Directory.GetFiles(SalesInputFilePath + ResourceDetails.InputFolders(FormDMM, EH, ObjApp, Modules, "HKFolder")).Length != 0)
{
ListBox1.Items.Add(Directory.GetFiles(SalesInputFilePath + ResourceDetails.InputFolders(FormDMM, EH, ObjApp, Modules, "HKFolder"))[0]);
}
if (Directory.GetFiles(SalesInputFilePath + ResourceDetails.InputFolders(FormDMM, EH, ObjApp, Modules, "UKFolder")).Length != 0)
{
ListBox1.Items.Add(Directory.GetFiles(SalesInputFilePath + ResourceDetails.InputFolders(FormDMM, EH, ObjApp, Modules, "UKFolder"))[0]);
}
我有不可推卸的倾向,在复杂的事情,想知道是否有一个更简单的,或者至少更有效的方式来做到这一点比我的头的伪代码。
谢谢。
什么是最终的结果,你有兴趣在所有的目录名?您可以在树形视图中显示的所有文件/所有子文件夹/两种/一种分层结构的列表?根据您的屏幕截图提供一些示例输出。 –
尝试“递归”。 – MichaelMao
本质上我正在寻找我的列表框来填充文件夹“输入”或其子文件夹之一中存在的任何文件的完整路径和文件名。 – DDuffy