C# - Получите список файлов, исключая тех, которые скрыты

Directory.GetFiles() возвраты все файлы, даже те, которые отмечены, как скрытый. Существует ли способ получить список файлов, который исключает скрытые файлы?

65
задан Amar Palsapure 30 January 2012 в 08:03
поделиться

2 ответа

Это должно работать для вас:

DirectoryInfo directory = new DirectoryInfo(@"C:\temp");
FileInfo[] files = directory.GetFiles();

var filtered = files.Where(f => !f.Attributes.HasFlag(FileAttributes.Hidden));

foreach (var f in filtered)
{
    Debug.WriteLine(f);
}
99
ответ дан 24 November 2019 в 15:24
поделиться

Используя .NET 4.0 и Directory.EnumerateDirectories, вы можете использовать эту конструкцию:

var hiddenFilesQuery = from file in Directory.EnumerateDirectories(@"c:\temp")
                       let info = new FileInfo(file)
                       where (info.Attributes & FileAttributes.Hidden) == 0
                       select file;

Это в основном то же самое, что и другой ответ, за исключением того, что Directory.EnumerateDirectories немного более ленив. Однако это не очень полезно, если вы все перечисляете.

(Let здесь, чтобы запрос был более читабельным).

8
ответ дан 24 November 2019 в 15:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: