如何在搜索中排除受保护的操作系统文件

时间:2013-04-17 13:42:45

标签: c# file search directory

(使用Windows 7 64位和C#)

有没有办法从搜索中排除这些受保护的文件?

这是显示文件夹中的所有文件,包括“系统文件”

string[] files = Directory.GetFiles(directory);

enter image description here enter image description here

4 个答案:

答案 0 :(得分:12)

var list = new DirectoryInfo(@"C:\").GetFiles()
                .Where(f => !f.Attributes.HasFlag(FileAttributes.System))
                .Select(f => f.FullName)
                .ToList();

答案 1 :(得分:2)

您可以使用FileInfo

var fileInfo = new FileInfo(path);
if((fileInfo.Attributes & FileAttributes.System) != FileAttributes.System))
{
    // path is not a system file
}

答案 2 :(得分:0)

Directory.GetFiles,与使用文件系统的所有其他.Net框架方法一样,不使用资源管理器设置。您可以按路径获取FileInfo,然后检查属性以自行过滤掉隐藏文件。

答案 3 :(得分:0)

对于每个文件,您必须检查文件属性,如下所示

FileAttributes att = File.GetAttributes(@"c:\samplefile.dll");

然后使用以下测试

if ((att & FileAttributes.System) == FileAttributes.System)
{
    // the file is system
}