Java.io.File 中 mkdir()和 mkdirs()的区别

谁能告诉我这两种方法的区别:

  • file.mkdir()
  • file.mkdirs()
162408 次浏览

mkdirs()还在这个 File表示的路径中创建 家长目录

对于 mkdirs(),javadocs :

创建由此抽象路径名命名的目录,包括 必要但不存在的父目录。请注意,如果 操作失败,它可能已经成功地创建了一些 必要的父目录。

对于 mkdir(),javadocs :

创建由此抽象路径名命名的目录。

例如:

File  f = new File("non_existing_dir/someDir");
System.out.println(f.mkdir());
System.out.println(f.mkdirs());

第一个将生成 false[不会创建 dir ] ,第二个将生成 true,您将创建 non_existing_dir/someDir

mkdirs()将完整地创建指定的目录路径,其中 mkdir()将只创建最底部的目录,如果找不到它试图创建的目录的父目录,则会失败。

换句话说,mkdir()mkdirmkdirs()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

mkdir()

一次只创建一个目录,如果父目录只创建一个。否则,它可以创建子目录(如果指定的路径仅存在) ,并且不在任何两个目录之间创建任何目录。因此它不能在一个目录中创建多个目录

mkdirs()

一次创建多个目录(也在两个目录之间)。