可能重复:
C# - 获取不包括隐藏文件的文件列表
我如何确保我只获得未隐藏的文件夹?
这是我所知道但它返回所有文件夹.
string[] folders = Directory.GetDirectories(path);
Run Code Online (Sandbox Code Playgroud)
您可以使用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
}
}
Run Code Online (Sandbox Code Playgroud)
另一种解决方案是以下单线:
var folders = new DirectoryInfo(path).GetDirectories().Where(x => (x.Attributes & FileAttributes.Hidden) == 0);
Run Code Online (Sandbox Code Playgroud)
在这种情况下folders是一个IEnumberable<DirectoryInfo>.如果您想要文件而不是目录,只需使用GetFiles替换GetDirectories即可.
您需要循环目录并检查该目录或文件的(属性)。
例子:
foreach (DirectoryInfo Dir in Directory.GetDirectories(path))
{
if (!Dir.Attributes.HasFlag(FileAttributes.Hidden))
{
//Add to List<DirectoryInfo>
}
}
Run Code Online (Sandbox Code Playgroud)