如何检查System.IO.File.Delete是否已成功删除文件

Gui*_*ngo 11 .net c# asp.net asp.net-mvc asp.net-mvc-4

使用system.io.file类删除文件后:

System.IO.File.Delete(openedPdfs.path);
Run Code Online (Sandbox Code Playgroud)

如果文件被成功删除,我需要运行一些代码.只要该方法没有返回任何值,我正在检查删除方法后文件是否存在.如果它仍然存在,我认为操作失败了.

问题是,删除方法工作正常,但要删除文件需要几秒钟.Exist函数返回true,因为在检查文件时存在.

如何验证是否System.IO.File.Delete(openedPdfs.path);成功完成?

码:

FileInfo file = new FileInfo(openedPdfs.path);    
System.IO.File.Delete(openedPdfs.path);
if (file.Exists == false)
{ ... }
else 
{ ... }
Run Code Online (Sandbox Code Playgroud)

Mik*_*kis 12

正如其他人所指出的那样,该File.Delete方法会在出现故障时抛出异常.

他们没有指出的是,几乎在所有情况下都会抛出异常,但在所有情况下都不会抛出异常.具体来说,如果要删除的文件不存在,则该File.Delete方法不会抛出异常.(Duh?他们在想什么?)

因此,您应该删除之前检查文件是否存在; 如果它不存在,你不应该做任何事情.如果它存在,你应该调用File.Delete,如果它抛出异常,那么你不应该做任何事情,因为文件没有被删除.否则,你应该做你的成功后删除现有文件的东西.


Dan*_*ite 1

Delete如果文件没有被删除,应该抛出异常。因此,您的调用Exists是多余的。

查看的文档Delete

  • -1:你的第一句话是错误的。当文件之前不存在(因此不会被删除)时,删除不会抛出异常。仔细看看Delete的文档:“如果要删除的文件不存在,则不会抛出异常”。 (16认同)
  • 从 File.Delete 完成到文件实际被删除有一点延迟。 (3认同)