我有配額驅動的驅動器,我想從該驅動器中刪除由指定用戶(實際上是一組使用特殊帳戶運行的應用程序)創建的所有文件。我怎樣才能做到這一點,而不用遞歸檢查硬盤上的所有文件和文件夾是否由指定的用戶創建?我只需要獲得「迭代器」。刪除指定用戶創建的所有文件
回答
就以下面的例子
[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. powershell刪除特定用戶的文件夾的所有權限
- 6. 刪除用戶在perforce中解鎖所有鎖定的文件
- 7. 批處理文件刪除除指定列表以外的所有文件夾
- 8. BASH:如何刪除清單中指定的所有文件?
- 9. 在指定目錄中刪除所有零大小的文件
- 10. 如何刪除指定目錄的所有文件擴展名?
- 11. Linux:刪除不包含所有指定字的文件
- 12. 刪除指定用戶
- 13. Powershell v1 - 刪除指定文件夾以外的所有文件和文件夾
- 14. Gtk,刪除構建指針是否刪除使用它創建的所有構件
- 15. C創建用戶指定的文件和文件夾
- 16. 刪除Imageview創建的所有圖像
- 17. Javascript創建divs刪除所有的CSS
- 18. 刪除除特定文件夾以外的所有文件夾
- 19. Quickblox:是否可以刪除用戶創建的所有自定義對象
- 20. 是否可以刪除特定用戶創建的所有數據庫?
- 21. 與指定名稱刪除所有類
- 22. NSHomeDirectory刪除所有文件
- 23. 刪除所有.ica文件
- 24. 在指定位置創建文本文件並刪除舊文件
- 25. 創建一個批處理文件刪除工作站上的所有用戶的文件
- 26. Bash腳本 - 從文本文件創建/刪除用戶
- 27. 管理用戶配置文件創建和刪除用戶和配置文件
- 28. 如何刪除除週一特定日期創建的文件以外的所有文件?
- 29. NSIS RMDir無法刪除用戶在ProgramData中創建的文件
- 30. 刪除文件夾內的所有文件,但刪除最後?
你的意思是*文件所有者*? – 2012-08-10 19:44:51
以編程方式,我相信你需要遍歷驅動程序的所有文件。也許你可以移動這個問題做serverfault,看看那裏的傢伙是否可以幫助你更好。 – 2012-08-10 19:51:06