私は割り当てられたドライブを持っており、特定のユーザー(実際には特別なアカウントを使用して実行される一連のアプリケーション)によって作成されたファイルをすべて削除します。 HDD上のすべてのファイルとフォルダを繰り返し確認せずに、これを行うにはどのようにすればいいですか?私はちょうど "イテレータ"を取得する必要があります。指定されたユーザーによって作成されたすべてのファイルを削除します
答えて
のバージョンを発表しましたが、次の例
[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
パフォーマンスの向上の点では、再帰アルゴリズムを使用してファイルとフォルダを検索するときにタスク並列ライブラリを使用できると思います。
別の方法、あなたは実際に、あなたがそれを行うことができますLucenceは、検索に便利なフレームワークであり、それは、すでに.NET
TPLとIO - SSDではない?たくさんのファイルの結果は、TPLなしの場合よりもずっと悪くなります... –
上を見てみましょうことを行うことができます繰り返しと非常に USN変更ジャーナルを効率的に使用して、http://msdn.microsoft.com/en-us/library/windows/desktop/aa363798.aspxを参照してください。フィルタリングを適切に使用すると、特定の期間内に特定のユーザーが作成したファイルの一覧を取得できます。
一方、この手法は非常に複雑で、時間が重要なアプリケーションに適しています。効率がアプリケーションの焦点でない場合は、より簡単なソリューションを選択します。
- 1. 指定されたファイルより古いファイルをすべて削除します
- 2. 指定されたディレクトリにゼロサイズのすべてのファイルを削除します
- 3. サイクルリスト - 指定されたすべての値を削除
- 4. 指定されたノードの後のすべてのノードを削除します
- 5. エンティティフレームワークによって作成されたデータベースの削除
- 6. pdf()によって作成された一時ファイルを削除する
- 7. Word 2003でアドインによって作成されたCommandBarを削除します。
- 8. FragmentStatePagerAdapterによって作成されたViewPagerからすべてのフラグメントを削除します。
- 9. 指定されたパスで項目を削除し、すべての親を再帰的に削除します
- 10. は、urlopen()またはrequests.get()によって作成されたファイルライクなオブジェクトのファイル名を指定します。
- 11. 誤って削除されたファイルを回復しました
- 12. Gitが削除されました - TortoiseGitによってキャッシュされました
- 13. 指定された値のすべてのインスタンスを削除するリンクリスト
- 14. 'Sender View'によって作成されたロックを削除するには?
- 15. GITの履歴から指定された拡張子を持つすべてのファイルを削除します。
- 16. 指定されたディレクトリのすべてのファイルとフォルダをループして削除する
- 17. バッチ:指定されたファイルのコマンドを削除する
- 18. rooによって作成された重複した* .ajファイル
- 19. QPushbutton setDefault(True)によって作成された色を削除する方法
- 20. 関数によって作成された配列を削除する
- 21. GWTによって生成された絶対位置を削除します
- 22. 以前のユーザーのやりとりによって決定されたクラスをJqueryで削除しました
- 23. アプリデータを消去すると、アプリによって作成されたテキストファイルが削除されますか?
- 24. AMAZON S3から今日までに作成されたすべてのファイルを削除します
- 25. ヒープ上に作成され、関数によって返された配列を削除できますか?
- 26. バッチファイル指定された拡張子でファイルを削除する
- 27. 今日作成されたすべてのレコードを削除するには?
- 28. .netワークフロー - ユーザーまたはビジネスアナリストによって作成されました
- 29. すべての押下されたキーダウンイベントを削除します
- 30. gsub()指定された文字を除くすべて?
*ファイルの所有者*を意味しますか? –
プログラム的に私はあなたのドライバのすべてのファイルを繰り返す必要があると思います。たぶんあなたはこの問題を動かすことができます。 –