File.mkdir or mkdirs return false - Reason?
为什么 file.mkdir 返回 false?
Google指出可能有几个原因(例如安全性,权限,路径名等)。
我的问题:
- 如何找到返回 false 的确切原因?
- 如果安全性/权限是一个原因,那么为什么没有抛出SecurityException?
为什么 file.mkdir 返回 false?
Google指出可能有几个原因(例如安全性,权限,路径名等)。
我的问题:
如果目录已经存在,mkdir 和 mkdirs 将返回 false,因此这可能是失败的一个原因。
如果您使用的是 Java 7,则可以使用 Files 类。它在错误时抛出一个IOException,描述得很好。
Files.createDirectory(file.toPath());
如果安全性/权限是一个原因,那么为什么没有抛出SecurityException(在javadoc中提到过)?
当您没有 JVM 级权限来执行某些操作(而不是操作系统级别)时,将抛出 ASecurityException
有没有办法找到返回 false 的确切原因?
不,AFAIK。知道的唯一方法是自己检查目录的权限,确保它在调用它们之前不存在,检查父目录是否存在等。
但是,如果您使用的是 Java 7 或更高版本,则可以改用 NIO 来创建目录。具体来说,Files.createDirectory
:
File dir = new File("mydir");
Files.createDirectory(dir.toPath());
如果你想完全不使用 NIO,你可以使用 Paths.get
来创建一个:java.io.File
Path
Path dir = Paths.get("mydir");
Files.createDirectory(dir);
在这两种情况下,如果无法创建目录,它将抛出一个确切的操作失败原因。IOException
对于 中的大多数方法都是如此,因此建议使用它而不是使用类中的方法。Files
File