我有一个包含文件路径列表的数据库。我想建立一个例程来清理文件夹,如果没有 db 记录,则删除目录中的文件(对于临时 ajax 文件上传,在用户未填写表单的情况下,等等......)。
我在想这样的事情:
var dbFiles = db.allPaths();
var allFiles = Directory.EnumerateFiles(path);
foreach (var f in allFiles) {
if (!dbFiles.Contains(f) {
File.Delete(f);
}
}
有什么“陷阱”等着我吗?该例程最初将设置为每周运行一次,如果临时文件成为问题,则更频繁。它将在几乎没有用户使用的时候运行,因此性能(虽然很重要)并不是最重要的。
更新
哇,很多很棒的答案。这段代码正在变成值得“分享”的东西。;D 我上面的代码只是一个简单、快速的占位符位......但它已转换为可靠的代码。谢谢!