如何在文件操作中使用事务

本文关键字:事务 操作 文件 | 更新日期: 2023-09-27 18:35:46

我的程序需要将一些文件操作视为一个单元,案例中的一些重要步骤是:

  1. 删除目录中的文件。
  2. 验证一些数据。如果数据无效,请回滚
  3. 将文件上载到目录。 如果上传失败,则回滚
  4. 提交更改。

我提出关于交易的要求是因为有时用户可能会使用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,这可能会对您有所帮助。

但实际上,您应该考虑重新设计您的逻辑 - 上传到临时文件,并且仅在上传成功时才删除原始文件(并重命名临时文件)。