我有配额驱动的驱动器,我想从该驱动器中删除由指定用户(实际上是一组使用特殊帐户运行的应用程序)创建的所有文件。我怎样才能做到这一点,而不用递归检查硬盘上的所有文件和文件夹是否由指定的用户创建?我只需要获得“迭代器”。删除指定用户创建的所有文件
回答
就以下面的例子
[Test]
public void Test()
{
string user = @"Domain\UserName";
var files = Directory.EnumerateFiles(@"C:\TestFolder")
.Where(x => IsOwner(x, user));
Parallel.ForEach(files, File.Delete);
}
private static bool IsOwner(string filePath, string user)
{
return string.Equals(File.GetAccessControl(filePath).GetOwner(typeof (NTAccount)).Value, user,
StringComparison.OrdinalIgnoreCase);
}
嗯,看起来像没有办法在没有重复硬盘上的每个文件的情况下获得此列表。好,谢谢 ) – Alexus 2012-08-13 12:39:03
在提高性能方面,我认为在使用递归算法搜索文件和文件夹时可以使用任务并行库。
另一种方式,你能做到这一点Lucence是为寻找一个有用的框架,它已经发布的版本为.NET
TPL和IO - 不是SSD?对于很多文件来说,结果会比没有TPL的结果差很多...... – 2012-08-10 20:52:43
其实一看,你可以这样做迭代地和有效地使用USN Change Journal的非常,参见http://msdn.microsoft.com/en-us/library/windows/desktop/aa363798.aspx。通过正确使用过滤,您可以获得特定用户在特定时间段内创建的文件列表。另一方面,这种技术相当复杂,适用于对时间要求严格的应用;如果效率不是您的应用程序的焦点,我会选择更简单的解决方案。
- 1. 删除比指定的文件旧的所有文件
- 2. 如何用PHP删除指定目录下的所有文件?
- 3. 公用文件夹删除所有用户的所有权限
- 4. 批处理文件删除除指定列表以外的所有文件夹
- 5. Linux:删除不包含所有指定字的文件
- 6. 在指定目录中删除所有零大小的文件
- 7. BASH:如何删除清单中指定的所有文件?
- 8. 删除指定用户
- 9. Powershell v1 - 删除指定文件夹以外的所有文件和文件夹
- 10. Gtk,删除构建指针是否删除使用它创建的所有构件
- 11. C创建用户指定的文件和文件夹
- 12. 删除Imageview创建的所有图像
- 13. 与指定名称删除所有类
- 14. 在指定位置创建文本文件并删除旧文件
- 15. NSHomeDirectory删除所有文件
- 16. 删除所有.ica文件
- 17. 创建一个批处理文件删除工作站上的所有用户的文件
- 18. 如何删除除周一特定日期创建的文件以外的所有文件?
- 19. 删除文件夹内的所有文件,但删除最后?
- 20. 找到指定文本后删除所有文本
- 21. 如何在用户删除应用程序时删除所有文件?
- 22. 删除所有用户目录中的文件夹
- 23. 文件用Matlab创建无法删除
- 24. 删除文件夹中的所有文件,排除某些文件被删除
- 25. 如何使用python擦除文件中的所有文本,但不删除/重新创建文件?
- 26. 在用户指定的目录中创建python文件形式
- 27. 如何在用户指定的位置创建nlog.config文件?
- 28. Powershell删除OU中的所有用户
- 29. XSLT - 删除除指定的属性之外的所有属性
- 30. 过滤器数组,所以指定的所有元素被指定被删除
你的意思是*文件所有者*? – 2012-08-10 19:44:51
以编程方式,我相信你需要遍历驱动程序的所有文件。也许你可以移动这个问题做serverfault,看看那里的家伙是否可以帮助你更好。 – 2012-08-10 19:51:06