【发布时间】:2015-09-03 19:50:55
【问题描述】:
我正在尝试根据“上次修改日期”删除目录中超过 10 天的文件。它应该做的是从 moxiemanager 上传中获取输入,它会这样做,并将其输入到数据库中,它会这样做。然后它应该删除超过 10 天的文件,但它不会。以下是我的代码:
public ActionResult CreateMain(BulletinsViewModel viewModel)
{
if (ModelState.IsValid)
{
BulletinsContext.tblBulletins.Add(new tblBulletin
{
ID = viewModel.BulletinID,
BulletinDisplayDate = viewModel.BulletinDisplayDate,
BulletinFilename = viewModel.MainBulletinName
});
DirectoryInfo DI = new DirectoryInfo(Server.MapPath("~/Files/Bulletins"));
FileSystemInfo[] FSI = DI.GetFiles();
foreach (FileSystemInfo fInfo in FSI)
{
if (fInfo.Extension == ".pdf")
{
DateTime dt = DateTime.Now.AddDays(-10);
if (fInfo.CreationTime < dt)
try
{
fInfo.Delete();
}
catch { }
}
}
BulletinsContext.SaveChanges();
return RedirectToAction("MainBulletins");
}
return View(viewModel);
}
我在想这可能是文件路径不是此方法的正确语法,或者“fInfo.CreationTime”部分错误,但我觉得 CreationTime 将被最后修改?
【问题讨论】:
-
您正在丢弃异常,您确定没有任何可以解释问题的方法吗?使用调试器查看为什么它没有做它应该做的事情?
-
另一种方法是将这些信息存储在数据库中。每次创建文件时,都会添加一行及其 CreationDate。然后,您可以简单地找到所有超过 N 天的文件
-
@SamiKuhmonen - 异常对我来说是一个非常薄弱的环节,最好的方法是什么?
-
@Kilanny 有一个数据库,它保存文件的路径和显示文件的日期(这些都是每天完成的,所以只显示一天)。然后,如果文件超过 10 天,我们希望从目录中删除它们,否则它只会变得混乱
-
@SouthWilts 难道你不能通过每次修改/创建文件时更新行来保持你的数据库总是最新的吗?只依赖你的数据,不要再使用 Windows 文件系统了。
标签: c# asp.net asp.net-mvc