|
|
1
13
尝试预先检测文件是否在使用中没有意义-如果有人在检测代码和删除代码之间打开文件怎么办?您仍然需要现有的代码来处理这种情况。 您已经拥有的代码正是实现这一点的正确方法。 |
|
|
2
3
如果只想测试删除是否成功而不捕获异常,只需为
这个会回来的
|
|
|
3
3
正如Richie所说,捕获异常可能是这里最好的方法。 但是,如果你想删除10个文件,而你又不想让它中途失败呢?您确实需要某种方式来保护整个事务。所以它 是 有助于被动检查文件是否在使用中。您只需尝试打开文件进行写入(如果成功,则立即关闭),就可以确定文件是否正在使用(或只读,这也会使文件变得不可删除)。但这本身并不能保证随后的删除尝试会成功。 其他可行的方法是: -在删除之前移动/重命名文件(将它们放在安全的地方,这样您就知道它们不会随后被另一个进程打开),这样,如果任何单个移动操作失败,您就可以“撤消”事务。 -捕获异常并在以后尝试删除文件时排队(在您自己的程序中,或者您可以在下次重新启动时将文件标记为Windows自动删除) |
|
|
4
3
扩展Richie的正确答案 在使用文件系统时,如果操作成功,则永远无法可靠地执行。您所能做的就是尝试一个操作并检查它是否成功。 文件系统是一个你无法控制的移动目标。任何数量的外部和其他用户事件都可能影响您控制范围之外的文件系统。在许多方面,它就像多线程编程一样,不可能实现同步。每当您看到如下代码时,就会出现一个微妙的错误
|
|
|
user23819755 · 从文件加载的数据未按正确顺序返回 2 年前 |
|
|
Grekys · C数组元素全部变为相同值 2 年前 |
|
|
Deba · 为什么在cin语句中打印空格时,第0个字符没有打印出来? 2 年前 |
|
|
catodd · C-试图将整数和结构数组存储到二进制文件中 2 年前 |
|
|
heapyams · Java可执行文件无法读取资源文件夹[重复] 2 年前 |
|
|
Community wiki · 在文件中插入值 2 年前 |