如何在文件操作中使用事务
本文关键字:事务 操作 文件 | 更新日期: 2023-09-27 18:35:46
我的程序需要将一些文件操作视为一个单元,案例中的一些重要步骤是:
- 删除目录中的文件。
- 验证一些数据。如果数据无效,请回滚。
- 将文件上载到目录。 如果上传失败,则回滚。
- 提交更改。
我提出关于交易的要求是因为有时用户可能会使用VPN访问我的网站,VPN连接可能非常不稳定。
如果第 3 步失败,则第 1 步和新上传的文件都将丢失。
我的一些代码:
DeleteTheOlderDT(path, FileName);
this.fuTemplateName.SaveAs(path + FileName);
_t.FileName = FileName;
if (!System.IO.File.Exists(path + FileName))
{
ArrayList ItemList = new ArrayList();
ItemList.Add("Uploading failed, please upload again!");
btlError.DataSource = ItemList;
btlError.DataBind();
_t.FileName = "";
return;
}
我认为您只能手动执行此操作。看看马丁·福勒(Martin Fowler)的UnitOfWork,你可以意识到像他描述的那样
还要检查此链接,也许可以帮助您
- 事务文件管理器
- STM.NET
- 来自 MSDN 的文章
我从未尝试过文件系统,但代码项目上有很好的文章。
请看一看 http://www.codeproject.com/Articles/31270/A-Transactional-Repository-Implementation-in-NET
希望它能解决您的问题。
Windows Vista和更新版本支持事务性NTFS,这可能会对您有所帮助。
但实际上,您应该考虑重新设计您的逻辑 - 上传到临时文件,并且仅在上传成功时才删除原始文件(并重命名临时文件)。