【发布时间】:2013-04-10 07:33:20
【问题描述】:
(使用 windows 7 64 位和 C#)
有没有办法从搜索中排除这些受保护的文件?
这是显示文件夹中的所有文件,包括“系统文件”
string[] files = Directory.GetFiles(directory);
【问题讨论】:
(使用 windows 7 64 位和 C#)
有没有办法从搜索中排除这些受保护的文件?
这是显示文件夹中的所有文件,包括“系统文件”
string[] files = Directory.GetFiles(directory);
【问题讨论】:
对于每个文件,您必须检查文件属性,如下所示
FileAttributes att = File.GetAttributes(@"c:\samplefile.dll");
然后使用下面的测试
if ((att & FileAttributes.System) == FileAttributes.System)
{
// the file is system
}
【讨论】:
var list = new DirectoryInfo(@"C:\").GetFiles()
.Where(f => !f.Attributes.HasFlag(FileAttributes.System))
.Select(f => f.FullName)
.ToList();
【讨论】:
f => f.FullName 是一个 lambda 表达式。 list.Where().Select().ToList() 是 linq 方法语法。
您可以使用FileInfo。
var fileInfo = new FileInfo(path);
if((fileInfo.Attributes & FileAttributes.System) != FileAttributes.System))
{
// path is not a system file
}
【讨论】:
Directory.GetFiles 与所有其他适用于文件系统的 .Net 框架方法一样,不使用资源管理器设置。你可以通过路径获取FileInfo,然后自己检查属性过滤掉隐藏文件。
【讨论】: