如何在搜索中排除受保护的操作系统文件
(使用Windows 7 64位和C#)
有没有办法从搜索中排除这些受保护的文件?
这显示文件夹中的所有文件,包括“系统文件”
string[] files = Directory.GetFiles(directory);
var list = new DirectoryInfo(@"C:\").GetFiles() .Where(f => !f.Attributes.HasFlag(FileAttributes.System)) .Select(f => f.FullName) .ToList();
您可以使用FileInfo 。
var fileInfo = new FileInfo(path); if((fileInfo.Attributes & FileAttributes.System) != FileAttributes.System)) { // path is not a system file }
Directory.GetFiles,与使用文件系统的所有其他.Net框架方法一样,不使用资源管理器设置。 您可以按路径获取FileInfo,然后检查属性以自行过滤掉隐藏文件。
对于每个文件,您必须检查文件属性,如下所示
FileAttributes att = File.GetAttributes(@"c:\samplefile.dll");
然后使用以下测试
if ((att & FileAttributes.System) == FileAttributes.System) { // the file is system }