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

如何知道File.Copy成功?分享

时间:2023-04-11 03:39:02 C#

如何知道File.Copy成功?静态方法File.Copy(String,String)不返回任何值。我如何以编程方式知道函数是否成功?如果没有抛出异常,则File.Copy没问题。但我要问的是如何把“无一例外”作为条件。像这样:if(noexceptionhappened){//mycodegoeshere}编辑:我使用一个简单的计数器解决了这个问题,如下所示:inti=0;试试{File.Copy();}catch(e1){i++;}catch(e2){i++;}if(i==0){//我的代码在这里}感谢所有贡献者。我会仔细检查您的答案并选择最佳答案。如果操作没有抛出任何异常,则表示它成功了。此处提供了可能的异常列表:UnauthorizedAccessExceptionArgumentExceptionArgumentNullExceptionPathTooLongExceptionDirectoryNotFoundExceptionFileNotFoundExceptionIOExceptionNotSupportedException错误如果方法不抛出异常,则不会发生错误。该方法能够做它承诺做的事情,因此它不会受到影响,也不会尝试返回某种状态代码。您不需要检查状态代码,因为您会知道它已成功。如果方法复制操作失败,将抛出异常。在这种情况下,该方法不能做它承诺会做的事情,这意味着发生了一些奇怪的(异常),所以抛出了异常。既然抛出了异常,你就不得不去处理它,否则你的程序就会崩溃。所以检查状态码是没有意义的。您不能编写任何可以以任何方式读取该状态代码的代码,因为永远不会到达状态检查代码。代码流将转到catch块或程序终止。这些概念是使用异常进行错误处理的基础。如何处理异常除非您需要,并且有一些合理的方法可以从异常中恢复,否则不要处理它们。让你的程序爆炸。这使得查找代码中的错误变得更加容易,因为未处理的异常会产生堆栈跟踪,它会告诉您程序的哪一部分真正爆炸了,以及代码是如何走到这一步的。如果您有合理的恢复方法(例如只向用户显示错误消息并重试操作,或让他们输入不同的参数),那么您可以编写try/catch块。在try块中编写可能引发异常的代码,并在catch块中编写恢复代码。试试{varfile=File.Open(文件名);//Todo:在此处处理打开的文件}catch(FileNotFoundExceptione){MessageBox.Show("无法打开文件-"+e.ToString());//Todo:额外的恢复,//比如告诉调用代码重新打开文件选择对话框}请注意,您永远不应该捕获基本异常类型,而是您可以处理的特定派生异常类型(例如FileNotFoundException)。这是有道理的,因为您可能无法编写将从OutOfMemoryException中成功恢复的代码,并且该异常可能会在代码中的任何位置抛出。如果您捕获到异常,那么您正在编写试图处理任何事情的代码,而不仅仅是您感兴趣的异常。完成File.Copy是一个同步操作。所以一旦方法完成,那么实际的复制就完成了。这意味着您可以在复制的行之后立即编写一行代码。并且该代码可以期望文件存在,因为它可以被完全复制,并且可以访问它。如果该方法没有抛出异常,则表示它成功了。如果没有异常,则表示文件已成功完全复制...usingSystem;使用System.IO;类测试{publicstaticvoidMain(){stringpath=@"c:tempMyTest.txt";字符串路径2=路径+“临时”;try{//创建文件并清理句柄。using(FileStreamfs=File.Create(path)){}//确保目标不存在。文件。删除(路径2);//复制文件。文件复制(路径,路径2);Console.WriteLine("{0}复制到{1}",path,path2);//尝试再次复制同一个文件,这应该会成功。文件复制(路径,路径2,真);Console.WriteLine("第二次Copy操作成功,符合预期。");}catch{Console.WriteLine("不允许重复复制,这不是预期的。");虽然我不知道你发生了什么,但我遇到了类似的情况,我必须复制文件并且需要知道它是否成功,因为我在.NETAPI中找不到任何有用的东西我唯一的选择就是一直尝试直到成功为止(没时间尝试)比如下面的代码我试了5次就放弃了如果分享的内容对你有用,你需要了解更多C#学习教程,希望你会更加注意—privateboolCopyDone(){booldone=false;诠释我=0;字符串源=“源文件”;什么ile(i)本文整理自网络,不代表立场,如涉及侵权,请点右联系管理员删除,如需转载请注明出处: