【发布时间】:2012-08-12 02:58:29
【问题描述】:
**编辑: 有人指出,我的代码确实可以工作。但它将“this.zip”文件标识为子文件夹,因此列出了任何不是我想要的“contents\this.zip”文件夹。 (试图只找到那些'contents\newfolder\this.zip',所以'contents'目录至少有一个子文件夹)。我怎样才能让它只列出实际文件夹的目录,而不仅仅是 .zip 文件?
我正在编写一个程序来处理标题为“this.zip”的文件,这些文件通常直接位于名为“contents”的文件夹中。我正在尝试确定 this.zip 文件是否直接位于“内容”文件夹中,或者是否有一个子文件夹。我有一组代码正在确定“内容”文件夹是否为空,我认为可以更改它以查找包含子目录的任何“内容”文件夹,但它不起作用。
//This finds 'contents' folders that are empty
DirectoryInfo directory = new DirectoryInfo(txtbxOldFolder.Text);
DirectoryInfo[] folders = directory.GetDirectories("*contents*",SearchOption.AllDirectories);
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 empty 'contents' folder
listEmptyFolder.Add(str);
}
我想如果我将查询 - where 语句更改为长度 > 1,它会找到任何具有子目录的内容,但它不起作用。这是完成我正在尝试的事情的最佳方式,还是这种使用 LINQ 的尝试会奏效?
//This is supposed to find 'contents' folders that have subdirectories, but it's unsuccessful
DirectoryInfo directory = new DirectoryInfo(txtbxOldFolder.Text);
DirectoryInfo[] folders = directory.GetDirectories("*contents*",SearchOption.AllDirectories);
Var query = from folder in folders
where folder.GetFileSystemInfos().Length > 1
select folder.FullName.ToString();
foreach (string str in query)
{
//this adds the path of any empty 'Contents' folder
listNestedFolders.Add(str);
}
【问题讨论】:
-
你能仔细检查你发布的样本吗? GetDirectories 的方法签名是 Directory.GetDirectories(String)、Directory.GetDirectories(String, String) 和 Directory.GetDirectories(String, String, SearchOption)。
-
对于我列出的有效代码,它与它看起来完全一样。
-
您的代码查找空文件夹。
-
“*内容*”是什么?使用这个“内容\\”。并且在哪里 folder.GetFileSystemInfos().Length > 0
-
您的代码工作正常。将长度>1 更改为长度>0
标签: c# winforms linq directory