隐藏文件夹C#
问题描述:
可能重复:
C# - Get a list of files excluding those that are hidden隐藏文件夹C#
我如何确保我只得到非隐藏的文件夹?
这是我所知道的,但它会返回所有文件夹。
string[] folders = Directory.GetDirectories(path);
答
您可以使用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);
在这种情况下folders
是IEnumberable<DirectoryInfo>
。 如果你想要文件而不是目录,只需用GetFiles替换GetDirectories即可。
答
您需要循环目录并检查该目录或文件的(attrib utes)。
例子:
foreach (DirectoryInfo Dir in Directory.GetDirectories(path))
{
if (!Dir.Attributes.HasFlag(FileAttributes.Hidden))
{
//Add to List<DirectoryInfo>
}
}
答
喜欢的东西
var dirs = Directory.GetDirectories("C:").Select(dir => new DirectoryInfo(dir))
.Where(dirInfo => (!dirInfo.Attributes.HasFlag(FileAttributes.Hidden)));
看到这里http://stackoverflow.com/questions/2418270/c-get-a-list-of-files-excluding-those -that-are-hidden – w69rdy 2010-11-09 12:26:28
相同类型的目录属性检查应该在这里工作。 – ChrisF 2010-11-09 12:29:07
原理完全一样。只需将第2行改为“GetDirectories”即可。 – 2010-11-09 12:29:56