C#文件复制回滚

本文关键字:复制 文件 | 更新日期: 2023-09-27 18:20:01

当抛出异常时,有人知道如何在文件复制中实现回滚功能吗。

以下是我复制文件时的一些条件:

  1. 将文件复制到共享文件夹
  2. 文件不大于3MB
  3. 文件是一个图像文件(jpg、jpeg、bmp、gif、png)
  4. 已实施防止文件名重复
  5. 操作系统在Windows XP及更高版本中
  6. 代码位于Visual Studio 2010 Professional中的C#.Net 4.0上
  7. 网络连接为局域网
  8. 要复制多个文件,在引发异常时回滚

请帮忙。提前谢谢。

C#文件复制回滚

是。返回并删除所有文件。

根据你的结构,你可以做很多事情。例如,如果你有一个List<string>,使用int:迭代

for(int i = 0; i < filesToCopy.Count; i++) {
    try {
        // Copy the file
    } catch(Exception ex) {
        // Rollback
        while(--i >= 0) {
            System.IO.File.Delete(filesToCopy[i]); // For example
        }
        break;
    }
}

您可以跟踪成功复制的文件,并在决定回滚时删除其中的每一个。但是,您是否认为您修改共享上文件的能力(包括在回滚期间删除文件)通常取决于网络连接?

换言之,如果异常是由于网络故障引起的,您将永远无法回滚——除非在您的控制下有另一个程序在另一端运行,您可以与之合作。