c# - 获取除隐藏目录中的文件之外的所有文件?

标签 c#

我想创建一个目录中所有文件的列表,除了隐藏文件和目录中隐藏文件夹中的文件。我用了这个方法,

new DirectoryInfo(path).GetFiles("*.*", SearchOption.AllDirectories)
                     .Where(f => (f.Attributes & FileAttributes.Hidden) == 0)

但是上述方法返回隐藏文件夹中的文件。有没有其他方法可以在不递归遍历目录的情况下执行此操作?

最佳答案

那是因为隐藏子文件夹中的文件没有被隐藏。 要检查这一点,您必须递归地走到每个文件夹并检查文件夹属性。

示例函数:

   private static IList<FileInfo> getNonHidden(DirectoryInfo baseDirectory)
    {
        var fileInfos = new List<System.IO.FileInfo>();
        fileInfos.AddRange(baseDirectory.GetFiles("*.*", SearchOption.TopDirectoryOnly).Where(w => (w.Attributes & FileAttributes.Hidden) == 0));
        foreach (var directory in baseDirectory.GetDirectories("*.*", SearchOption.TopDirectoryOnly).Where(w => (w.Attributes & FileAttributes.Hidden) == 0))
            fileInfos.AddRange(getNonHiddenFiles(directory));

        return fileInfos;
    }

使用方法:

  var path = @"c:\temp\123";
  var result = getNonHidden(new DirectoryInfo(path));

关于c# - 获取除隐藏目录中的文件之外的所有文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30570023/

相关文章:

c# - MVC3中的Page和ViewBag动态对象有什么区别?

c# - 我可以一次性处理多个对象吗?

c# - Entity Framework 中的僵尸对象

c# - 更改 WinForm 按钮文本颜色?

c# - 使用 Unity IOC 的 Web API - 如何解决我的 DBContext 依赖关系?

c# - CaSTLe DynamicProxy - 'classToProxy' 必须是一个类

c# - 如何在 HTTPWebRequest 期间阻止 Internet Explorer 安全警报

c# - 我怎样才能让这个函数删除多行

C# & XLW 5 - 如何引发异常并在 Excel 中显示合理的错误消息?

c# - 在Unity中动态改变物体的速度