【发布时间】:2012-02-01 21:34:42
【问题描述】:
我想做这样的事情:
if (!file.canWrite())
throw Exception("Permission denied");
file.mkdirs();
但是,我不能这样做,因为canWrite 仅适用于已经存在的文件。有没有办法判断我是否能够写入文件(如果存在)?
编辑:谢谢,我意识到我可以检查文件是否存在。读过第三行代码的人都会意识到,我的问题是mkdirs 如果无法创建目录,它只会返回false - 没有解释创建失败的原因。
另外,mkdirs 将创建任意深度嵌套的文件。所以我需要类似的东西:
while(file.hasParent()){
file = file.parent();
if (!file.canWrite()) throw (..);
}
正如 Paul 指出的,我也需要知道 umask。
【问题讨论】:
-
Is there a way to tell if I would be able to write to a file, if it existed?我不这么认为... -
考虑检查目录的权限。
-
查看目录;这就是定义写权限的原因,不是吗?否则不是真的,因为可以使用自己的权限创建文件。
-
除了目录的权限外,还需要知道umask。我认为没有一种简单的方法可以做到这一点。
-
@BrianRoach:在说我很荒谬之前,请先看看mkdirs does 是什么...
标签: java file permissions