web-dev-qa-db-ja.com

Java.io.FileのJavaのmkdir()とmkdirs()の違い

file.mkDir()file.mkDirs()の違いを教えてもらえますか?

110
Krishna Kankal

mkdirs()は、このFileが表すパスに親ディレクトリも作成します。

javadocs for mkdirs()

必要だが存在しない親ディレクトリを含む、この抽象パス名で指定されたディレクトリを作成します。この操作が失敗した場合、必要な親ディレクトリの作成に成功した可能性があることに注意してください。

javadocs for mkdir()

この抽象パス名で指定されたディレクトリを作成します。

例:

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

最初のfalseを生成し、2番目のtrueを生成し、non_existing_dir/someDirを作成します。

145
amit

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が返されます。

56
Dave Webb
mkdir()

親である場合は、一度に1つのディレクトリのみを作成します。そうでなければ、サブディレクトリを作成でき(指定されたパスが存在する場合のみ)、2つのディレクトリの間にディレクトリを作成しません。そのため、1つのディレクトリに複数のディレクトリを作成できません

mkdirs()

一度に複数のディレクトリ(2つのディレクトリの間にも)を作成します。

4
Durga Rao