可能重复:
C# - Get a list of files excluding those that are hidden
如何确保我只获取未隐藏的文件夹?
这是我所知道的,但它会返回所有文件夹。
string[] folders = Directory.GetDirectories(path);
答案 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);
在这种情况下,folders
是IEnumberable<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)));