从目录返回的文件计数错误

时间:2017-12-07 13:12:47

标签: c#

我有一个方法在顶层目录中搜索任何文件并返回如下计数:

public int AttachmentCountItemDirectory(string directoryPath)
{
   int fileCount = 0;
   if (Directory.Exists(directoryPath))
       fileCount = Directory.GetFiles(directoryPath, "*", SearchOption.TopDirectoryOnly).Length;

   return fileCount;
}

当目录中有1个或更多文件时,上述方法效果很好。我面临的问题是,当没有文件计数仍然 1 时出于某种奇怪的原因。我已启用显示隐藏文件,文件夹和驱动器,并且从下面的图片中可以清楚地看到没有文件。

Directory Image

enter image description here

我错过了一些明显的东西吗?有人能告诉我哪里出错了吗

1 个答案:

答案 0 :(得分:1)

您发表了评论

  

是thumbs.db

所以回答原来的问题。

我的建议是应用过滤器来仅返回相关文件

  

我可以一次提供多个过滤器吗?我想申请的过滤器   是:pdf,doc,docx,xl​​s,xlsx,jpeg,png

是的,您可以使用LINQ:

public int AttachmentCountItemDirectory(string directoryPath)
{
   string[] attExt = {".pdf",".doc",".docx",".xls",".xlsx",".jpeg",".png"};
   return Directory.EnumerateFiles(directoryPath)
     .Count(f => attExt.Contains(Path.GetExtension(f), StringComparer.InvariantCultureIgnoreCase));
}

如果将无效路径传递给方法,则不会返回0。我抛出异常。