138

誰でもこれら2つの方法の違いを教えてもらえますか:

  • file.mkdir()
  • file.mkdirs()
4

3 に答える 3

166

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

javadocmkdirs() :

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

javadocmkdir() :

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

例:

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

false最初の[そしてディレクトリは作成されません]、true2番目の場合は生成され、作成されますnon_existing_dir/someDir

于 2012-03-22T10:09:08.650 に答える
65

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ます。

于 2012-03-22T10:16:34.327 に答える
4
mkdir()

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

mkdirs()

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

于 2013-06-20T11:45:53.337 に答える