【发布时间】:2014-07-30 23:04:21
【问题描述】:
以下代码抛出断言,但不是异常。
if( descFile.exists() ) {
check = descFile.delete();
assert(check);
}
怎么可能?如果文件没有被删除,为什么不抛出异常?
【问题讨论】:
-
有几个可能的原因:你没有足够的权限,文件已经被其他进程删除,文件正在被其他进程使用(锁定)...
-
如果文件被锁定,为什么不会出现异常?
-
因为
File#delete只会抛出异常如果安全管理器存在并且其SecurityManager.checkDelete(java.lang.String) 方法拒绝删除对文件的访问权限。