Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查java中不存在的文件的权限_Java_File_Permissions - Fatal编程技术网

检查java中不存在的文件的权限

检查java中不存在的文件的权限,java,file,permissions,Java,File,Permissions,我想做一些类似的事情: if (!file.canWrite()) throw Exception("Permission denied"); file.mkdirs(); while(file.hasParent()){ file = file.parent(); if (!file.canWrite()) throw (..); } 但是,我不能这样做,因为canWrite只适用于已经存在的文件。有没有办法判断我是否能够写入一个文件,如果它存在的话 编辑:谢谢,我意识到我可

我想做一些类似的事情:

if (!file.canWrite())
  throw Exception("Permission denied");
file.mkdirs();
while(file.hasParent()){
  file = file.parent();
  if (!file.canWrite()) throw (..);
}
但是,我不能这样做,因为
canWrite
只适用于已经存在的文件。有没有办法判断我是否能够写入一个文件,如果它存在的话


编辑:谢谢,我意识到我可以检查文件是否存在。阅读第三行代码的人会意识到,我的问题是,
mkdirs
如果无法创建目录,只会返回
false
——没有解释创建失败的原因

此外,
mkdirs
将创建任意深度嵌套的文件。所以我需要像这样的东西:

if (!file.canWrite())
  throw Exception("Permission denied");
file.mkdirs();
while(file.hasParent()){
  file = file.parent();
  if (!file.canWrite()) throw (..);
}

正如保罗指出的,我也需要了解乌玛斯克

执行相同的操作,但改为在目录上执行。目录写入权限决定了谁可以和谁不能将文件写入该目录

执行相同的操作,但改为在目录上执行。目录写入权限决定了谁可以和谁不能将文件写入该目录

您可以首先检查文件是否存在:

boolean exists = file.exists();

您可以首先检查文件是否存在:

boolean exists = file.exists();


无法对不存在的内容测试权限。但是,您可以进行测试以查看该项是否存在,如果存在,则检查权限

无法对不存在的内容测试权限。但是,您可以进行测试以查看该项是否存在,如果存在,则检查权限

<代码>有没有一种方法来判断我是否能够写入文件,如果它存在的话?< /代码>我不这么认为……考虑检查目录的权限。检查目录;这就是写权限的定义,不是吗?否则不会,因为文件可以使用自己的权限创建。除了目录上的权限外,您还需要知道umask。我不认为有一个简单的方法来做这件事。布莱恩:请先查一下我说的荒谬……<代码>有没有办法告诉我,如果文件存在,我能不能写到文件?< /代码>我不这么认为……考虑检查目录的权限。检查目录;这就是写权限的定义,不是吗?否则不会,因为文件可以使用自己的权限创建。除了目录上的权限外,您还需要知道umask。我不认为有什么简单的方法可以做到这一点。@BrianRoach:请在说我荒谬之前先查一下……如果它的直接父目录也不存在呢
mkdirs
允许对不存在的目录进行任意嵌套。但是您可以拥有与目录权限不同的文件权限。@Brian-要实现这一点,文件必须存在,而这不是他所要求的。。。虽然它现在开始接近荒谬。@Xodarap-
mkdir
不是魔法,而是代码。将类似于/first/second/third的内容拆分并检查每个内容以查看其是否存在,并在权限允许时创建所需内容。如果它的直接父目录也不存在该怎么办
mkdirs
允许对不存在的目录进行任意嵌套。但是您可以拥有与目录权限不同的文件权限。@Brian-要实现这一点,文件必须存在,而这不是他所要求的。。。虽然它现在开始接近荒谬。@Xodarap-
mkdir
不是魔法,而是代码。将类似于/first/second/third的内容分开并检查每个内容以查看其是否存在的代码,在权限允许时创建所需的内容。