【发布时间】:2012-08-13 17:12:35
【问题描述】:
我有一个父文件夹,其中包含多个名为 Project-* 的文件夹(文件夹编号为 Project-1、Project-15、Project-253 等)。每个文件夹中都有一个 zip 文件,其名称始终为“project.zip”。这意味着当文件夹结构正确时,它应该始终是 TopFolder\Project-*\project.zip。
我正在尝试编写一个程序来查看每个 Project-* 文件夹以查看 project.zip 文件是否嵌套在另一个文件夹中(例如:Project-*\newfolder\project.zip)
我有一些代码可以查找名为 Project-* 的文件夹,并在它们有子目录时列出它们,但它似乎将我的 project.zip 文件视为文件夹,因此它将所有内容都显示为具有子目录。
DirectoryInfo directory = new DirectoryInfo(txtbxOldFolder.Text);
DirectoryInfo[] folders = directory.GetDirectories("*Project-*", SearchOption.AllDirectories);
//finds folders nested in the folder
var query = from folder in folders
where folder.GetFileSystemInfos().Length > 0
select folder.FullName.ToString();
foreach (string str in query)
{
//this adds the path of any Project-* folder with subdirectories
listNestedFolder.Add(str);
}
如上所述,上面的代码确实可以找到任何带有子目录的 Project-* 文件夹,但它也可以找到 Project-*\project.zip 中的任何文件夹。如何让它停止将 zip 文件识别为目录?
【问题讨论】:
-
值得注意的是,您应该使用 GetDirectories(如下面的答案),但如果您想从列表中排除 Zips,您可以使用
&& (folder.Attributes & System.IO.FileAttributes.Archive) == 0
标签: c# winforms linq directory