2010-11-09 138 views
1

可能重复:
C# - Get a list of files excluding those that are hidden隐藏文件夹C#

我如何确保我只得到非隐藏的文件夹?

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

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

看到这里http://stackoverflow.com/questions/2418270/c-get-a-list-of-files-excluding-those -that-are-hidden – w69rdy 2010-11-09 12:26:28

+0

相同类型的目录属性检查应该在这里工作。 – ChrisF 2010-11-09 12:29:07

+0

原理完全一样。只需将第2行改为“GetDirectories”即可。 – 2010-11-09 12:29:56

回答

8

您可以使用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即可。

4

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

例子:

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

喜欢的东西

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