java.io.File的java中mkdir()和mkdirs()之间的区别[关闭]
Posted
技术标签:
【中文标题】java.io.File的java中mkdir()和mkdirs()之间的区别[关闭]【英文标题】:Difference between mkdir() and mkdirs() in java for java.io.File [closed] 【发布时间】:2012-04-06 21:14:17 【问题描述】:谁能告诉我这两种方法的区别:
file.mkdir()
file.mkdirs()
【问题讨论】:
阅读 javadoc:mkdir vs mkdirs 较新的方法是使用 Files.createDirectories 和 Files.createDirectory 静态方法:docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html 使用mkdir后会得到“File not supported”。 两者之间有性能差异吗? 尤其是当父目录已经存在时? 【参考方案1】:mkdirs()
还在此File
所代表的路径中创建父目录。
javadocs 为mkdirs()
:
创建由此抽象路径名命名的目录,包括任何 必要但不存在的父目录。请注意,如果这 操作失败它可能已经成功地创建了一些 必要的父目录。
javadocs 为mkdir()
:
创建以此抽象路径名命名的目录。
示例:
File f = new File("non_existing_dir/someDir");
System.out.println(f.mkdir());
System.out.println(f.mkdirs());
将为第一个生成false
[并且不会创建目录],为第二个生成true
,您将创建non_existing_dir/someDir
【讨论】:
因为 oracle 再次断开互联网中的链接:mkdirs() 和 mkdir() @MyPasswordIsLasercats 谢谢你让我知道。固定。 如果目录已经存在,mkdir()
返回true
还是false
? javadoc 似乎没有涵盖这方面。
@Arun,根据 Javadoc,它返回“当且仅当创建了目录时才为真”,我想这对于它是由这个调用还是更早创建是模棱两可的。 This answer 建议前者。
mkdir 和 mkdirs 在我的情况下都返回 false -.-。如果我使用双反斜杠“\\”但它有效:如果我在之后执行“.toURI()”,我收到:file:/Users/MyName/Desktop/%5Cnon_existing_dir%5CsomeDir/ 如果我执行“.getPath() " 我收到 "\non_existing_dir\someDir",如果我收到 ".getCanonicalPath()" 我收到 /Users/MyName/Desktop/\non_existing_dir\someDir【参考方案2】:
mkdir()
一次只创建一个目录,如果它是父目录的话。否则它可以创建子目录(如果指定的路径仅存在)并且不要在任何两个目录之间创建任何目录。所以它不能在一个目录中创建多个目录
mkdirs()
一次创建多个目录(也在两个目录之间)。
【讨论】:
【参考方案3】:mkdirs()
将创建完整的指定目录路径,而mkdir()
将仅创建最底部的目录,如果找不到它尝试创建的目录的父目录,则会失败。
换句话说,mkdir()
类似于mkdir
,mkdirs()
类似于mkdir -p
。
例如,假设我们有一个空的/tmp
目录。以下代码
new File("/tmp/one/two/three").mkdirs();
将创建以下目录:
/tmp/one
/tmp/one/two
/tmp/one/two/three
这段代码在哪里:
new File("/tmp/one/two/three").mkdir();
不会创建任何目录 - 因为它找不到 /tmp/one/two
- 并且会返回 false
。
【讨论】:
以上是关于java.io.File的java中mkdir()和mkdirs()之间的区别[关闭]的主要内容,如果未能解决你的问题,请参考以下文章