ファイルへのパスのリストを含む DB があります。フォルダーをクリーンアップするルーチンを作成し、db レコードがない場合はディレクトリ内のファイルを削除します (一時的な ajax ファイルのアップロード、ユーザーがフォームに入力しない場合など)。
私はこのようなことを考えています:
var dbFiles = db.allPaths();
var allFiles = Directory.EnumerateFiles(path);
foreach (var f in allFiles) {
if (!dbFiles.Contains(f) {
File.Delete(f);
}
}
私を待っている「落とし穴」はありますか?ルーチンは、最初は週に 1 回実行するように設定されますが、一時ファイルが問題になると、より頻繁に実行されます。ユーザーがほとんどいない時間帯に実行されるため、パフォーマンスは重要ですが、最優先事項ではありません。
アップデート
うわー、たくさんの素晴らしい答え。このコードは、「共有」に値するものに変わりつつあります。;D 上記の私のコードは、単純で簡単なプレースホルダー ビットでした... しかし、しっかりしたコードに変換されます。ありがとうございました!