file.mkDir()
とfile.mkDirs()
の違いを教えてもらえますか?
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
を作成します。
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
が返されます。
mkdir()
親である場合は、一度に1つのディレクトリのみを作成します。そうでなければ、サブディレクトリを作成でき(指定されたパスが存在する場合のみ)、2つのディレクトリの間にディレクトリを作成しません。そのため、1つのディレクトリに複数のディレクトリを作成できません
mkdirs()
一度に複数のディレクトリ(2つのディレクトリの間にも)を作成します。