当前位置: 首页 > 编程语言 > C#

Mimic File.Move如果目标已存在分享

时间:2023-04-10 18:43:20 C#

C#学习教程:MimicFile.Moveifthetargetalreadyexists相同的名称,将发生IOException。您不能使用Move方法覆盖现有文件。简而言之,您不能在Move中覆盖,因此为了覆盖Move的方便,我通过先执行File.Copy和File.Delete来模仿该行为。类似于:if(File.Exists(dstFileName)){//System.IO.File.Move不能用于覆盖现有文件,因此我们要//使用复制和删除来模拟该行为。文件。复制(procContext.FileName,dstFileName);File.Delete(procContext.FileName);}elseFile.Move(procContext.FileName,dstFileName);我的问题是:有没有什么情况需要防范,导致源文件没有先复制成功就被删除了?我阅读文档的理解是,由于File.Copy不返回任何内容,如果它在任何情况下都不会成功,它应该抛出异常。有没有人遇到过任何不真实的情况?我建议你首先检查目标文件是否存在,如果存在,则将其删除。然后执行正常的移动操作。由于此序列不是primefaces序列,您可能希望重命名目标而不是删除它(如果它存在),以避免在移动失败时丢失它。正确的方法是调用File.Replace(source,destination,copy)这对我有用如果操作系统没有为您提供良好的原始操作,则很难模拟原始操作。Move在一些但不是所有文件系统上是原语,但在将磁盘移动到磁盘时不是。对于相同的磁盘,Delete+Move有点优雅(快速且安全),因为它不会以任何方式填充数据。您可以进一步扩展以尝试{Move(dest,tmp);移动(源,目标);删除(tmp);}catch{try{移动(tmp,dest);}赶上{}抛出;(例如,当您没有完成移动所需的权限时,这将使您不太可能丢失目标文件。)在您不知道的情况下,您的解决方案足够安全且足够简单这是同一张磁盘。但是,它甚至可以在同一磁盘内复制数据,从而为您提供更大的电源故障风险窗口。它是安全的。File.Copy将完全成功或抛出。当然,删除也有可能失败,源文件变成垃圾。但是,如果您的计算机崩溃,则无法保证复制操作已加固数据。在这种情况下,您可能会丢失数据。在正常操作期间,这是安全的。检查文件“target”是否存在。如果没有,请复制您的文件。如果是:将“目标”移动到临时目录,您可以确定移动会成功。您可以在Temp中生成一个名为auf和UUID的子目录。然后复制你的文件。以上就是C#学习教程:MimicFile.Move如果目标已经有了所有分享的内容,如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处: