Kann mir jemand den Unterschied zwischen diesen beiden Methoden erklären:
file.mkdir()
file.mkdirs()
Kann mir jemand den Unterschied zwischen diesen beiden Methoden erklären:
file.mkdir()
file.mkdirs()
Antworten:
mkdirs()
Erstellt auch übergeordnete Verzeichnisse in dem Pfad, den dies File
darstellt.
Javadocs für mkdirs()
:
Erstellt das Verzeichnis mit diesem abstrakten Pfadnamen, einschließlich aller erforderlichen, aber nicht vorhandenen übergeordneten Verzeichnisse. Beachten Sie, dass es bei einem fehlgeschlagenen Vorgang möglicherweise gelungen ist, einige der erforderlichen übergeordneten Verzeichnisse zu erstellen.
Javadocs für mkdir()
:
Erstellt das Verzeichnis mit diesem abstrakten Pfadnamen.
Beispiel:
File f = new File("non_existing_dir/someDir");
System.out.println(f.mkdir());
System.out.println(f.mkdirs());
wird false
für das erste [und es wird kein Verzeichnis erstellt] und true
für das zweite nachgeben , und Sie werden erstellt habennon_existing_dir/someDir
mkdir()
zurückgegeben true
oder false
? Der Javadoc scheint diesen Aspekt nicht abzudecken.
mkdirs()
erstellt den angegebenen Verzeichnispfad in seiner Gesamtheit, wobei mkdir()
nur das unterste Verzeichnis erstellt wird. Dies schlägt fehl, wenn das übergeordnete Verzeichnis des Verzeichnisses, das erstellt werden soll, nicht gefunden werden kann.
Mit anderen Worten mkdir()
ist wie mkdir
und mkdirs()
ist wie mkdir -p
.
Stellen Sie sich zum Beispiel vor, wir haben ein leeres /tmp
Verzeichnis. Der folgende Code
new File("/tmp/one/two/three").mkdirs();
würde die folgenden Verzeichnisse erstellen:
/tmp/one
/tmp/one/two
/tmp/one/two/three
Wo dieser Code:
new File("/tmp/one/two/three").mkdir();
würde keine Verzeichnisse erstellen - wie es nicht finden würde /tmp/one/two
- und würde zurückkehren false
.
mkdir()
Erstellt jeweils nur ein Verzeichnis, wenn es nur dieses übergeordnete Verzeichnis ist. Andernfalls kann das Unterverzeichnis erstellt werden (wenn nur der angegebene Pfad vorhanden ist) und keine Verzeichnisse zwischen zwei Verzeichnissen erstellt werden. Daher können nicht mehrere Verzeichnisse in einem Verzeichnis erstellt werden
mkdirs()
Erstellen Sie mehrere Verzeichnisse (auch zwischen zwei Verzeichnissen) gleichzeitig.