使用 system.io.file 类删除文件后:
System.IO.File.Delete(openedPdfs.path);
如果文件被成功删除,我需要运行一些代码。 只要该方法不返回任何值,我就会在 delete 方法之后检查文件是否存在。如果它仍然存在,我认为操作失败。
问题是,删除方法工作正常,但要删除文件需要几秒钟。 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
{ ... }
最佳答案
正如其他人所指出的,File.Delete
方法将在失败的情况下抛出异常。
他们没有说的是在几乎所有情况但并非在所有情况下都会抛出异常。
具体来说,File.Delete
方法不会在要删除的文件恰好不存在时抛出异常。
- 如果我们查看 Official Microsoft Documentation for System.IO.File.Delete ,
- 如果我们跳过抛出的异常列表,
- 如果我们继续滚动浏览大量代码示例以到达“备注”部分,
- 如果继续阅读本节,尽管它主要由琐碎的内容组成,例如
- “使用任何相对或绝对路径指定文件名”
- 和“相对路径信息被解释为相对于当前工作目录”
- 和“要获取当前工作目录,请参阅 GetCurrentDirectory”
- 然后我们到达了下面隐藏在噪音中的小 gem :
If the file to be deleted does not exist, no exception is thrown.
换句话说,这个函数有意内置了静默失败。
在几乎所有情况下,无提示故障都对开发人员的破坏。
关于c# - 如何检查 System.IO.File.Delete 是否成功删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14160656/