C#文件复制回滚

时间:2012-01-11 02:21:22

标签: c#

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

复制文件时有以下几种情况:

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

2 个答案:

答案 0 :(得分:2)

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

根据您的结构,您可以做很多事情。例如,如果您有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;
    }
}

答案 1 :(得分:0)

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

换句话说,如果异常是由于网络发生故障,您将永远无法回滚 - 除非您控制的另一个程序在您控制下运行,您可以合作。