Mic*_*sel 44
如果目录已经存在,mkdir和mkdirs将返回false,这可能是失败的原因之一.
如果您使用的是Java 7,则可以使用Files类.它会在错误时引发IOException并带有非常好的描述.
Files.createDirectory(file.toPath());
Run Code Online (Sandbox Code Playgroud)
Bri*_*ian 27
如果安全/权限是一个原因,那么为什么不抛出SecurityException(在javadoc中提到)?
SecurityException如果您没有JVM级别的权限来执行某些操作,而不是操作系统级别,则抛出A.
有没有办法找到返回false的确切原因?
不,AFAIK.唯一知道的方法是自己检查目录的权限,确保在调用之前它不存在,检查父目录是否存在等.
但是,如果您使用的是Java 7或更高版本,则可以使用NIO来创建目录.具体来说,Files.createDirectory:
File dir = new File("mydir");
Files.createDirectory(dir.toPath());
Run Code Online (Sandbox Code Playgroud)
如果您想完全使用NIO java.io.File,可以使用Paths.get创建Path代替:
Path dir = Paths.get("mydir");
Files.createDirectory(dir);
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,如果无法创建目录,它将IOException提供一个确切原因,说明操作失败的原因.
这对于大多数方法都是如此Files,因此建议使用它而不是使用File类中的方法.
不,没有办法找到mkdirs()返回false 的确切原因,至少不是来自Java内部,因为它可能依赖于操作系统.
一SecurityException,如果有一个安全冲突中被抛出SecurityManager的checkRead()与checkWrite()方法.如果存在操作系统权限问题,则不会抛出异常.
另外,请注意,如果您调用File.mkdir(),并且父目录不存在,mkdir()则返回false.但是,调用File.mkdirs()将创建不存在的父目录.
| 归档时间: |
|
| 查看次数: |
36075 次 |
| 最近记录: |