C# 以编程方式移动一批文件的安全方法?

C# 以编程方式移动一批文件的安全方法?,c#,file,filesystems,.net,C#,File,Filesystems,.net,在创建将一批文件从一个目录移动(剪切)到另一个目录的方法时,需要注意什么 假设方法签名是Move(filter、sourceFolder、destinationFolder、overwrite)。我需要注意什么以避免数据丢失的风险,特别是在覆盖原始文件和删除源文件时 我担心的几种可能的情况是:移动过程中出现错误,移动文件但文件损坏,删除同名文件以允许移动新文件,但移动新文件时出错,等等 我正在使用.net的System.IO命名空间进行移动操作。没有事务,最安全的方法是复制、验证然后删除。如果您

在创建将一批文件从一个目录移动(剪切)到另一个目录的方法时,需要注意什么

假设方法签名是
Move(filter、sourceFolder、destinationFolder、overwrite)
。我需要注意什么以避免数据丢失的风险,特别是在覆盖原始文件和删除源文件时

我担心的几种可能的情况是:移动过程中出现错误,移动文件但文件损坏,删除同名文件以允许移动新文件,但移动新文件时出错,等等


我正在使用.net的System.IO命名空间进行移动操作。

没有事务,最安全的方法是复制、验证然后删除。如果您想移动每个文件(windows就是这样做的,移动操作可能会失败,只移动一半文件),或者只移动整个批,或者根本不移动,则由您决定


您必须决定如何响应在移动过程中修改过的文件,以及之后无法删除的源文件,或者在执行回滚时已打开的目标文件。

您能够使用事务吗?下面是对事务NTFS的描述:Gabe:这仅适用于Vista和更高版本吗?我的程序也必须使用XPIMO,这种方法的一个缺点是复制比移动(通常是即时)慢,但如果没有某种交易,回滚部分成功的移动可能会变得棘手。并不是说“我的”move方法保证了干净的移动或回滚——它只是保证整个移动要么成功,要么失败,但保持源文件不变。