隐藏文件夹C#

时间:2010-11-09 12:19:08

标签: c#

  

可能重复:
  C# - Get a list of files excluding those that are hidden

如何确保我只获取未隐藏的文件夹?

这是我所知道的,但它会返回所有文件夹。

string[] folders = Directory.GetDirectories(path);

3 个答案:

答案 0 :(得分:9)

您可以使用DirectoryInfo检查文件夹是否隐藏:

string[] folders = Directory.GetDirectories(path);
foreach (string subFolder in folders) {
 string folder = Path.Combine(path, subFolder);
 DirectoryInfo info = new DirectoryInfo(folder);
 if ((info.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden) {
  // do something with your non-hidden folder here
 }
}

另一个解决方案是以下单行:

var folders = new DirectoryInfo(path).GetDirectories().Where(x => (x.Attributes & FileAttributes.Hidden) == 0);

在这种情况下,foldersIEnumberable<DirectoryInfo>。 如果您想要文件而不是目录,只需用GetFiles替换GetDirectories。

答案 1 :(得分:4)

您需要循环目录并检查该目录或文件的(attrib utes )。

示例:

foreach (DirectoryInfo Dir in Directory.GetDirectories(path))
{
    if (!Dir.Attributes.HasFlag(FileAttributes.Hidden))
    {
        //Add to List<DirectoryInfo>
    }
}

答案 2 :(得分:2)

这样的东西
var dirs = Directory.GetDirectories("C:").Select(dir => new DirectoryInfo(dir))
    .Where(dirInfo => (!dirInfo.Attributes.HasFlag(FileAttributes.Hidden)));