Czy ktoś może mi powiedzieć różnicę między tymi dwiema metodami:
file.mkdir()
file.mkdirs()
Czy ktoś może mi powiedzieć różnicę między tymi dwiema metodami:
file.mkdir()
file.mkdirs()
Odpowiedzi:
mkdirs()
tworzy również katalogi nadrzędne w ścieżce, którą File
reprezentuje.
javadocs dla mkdirs()
:
Tworzy katalog nazwany tą abstrakcyjną nazwą ścieżki, w tym wszystkie niezbędne, ale nieistniejące katalogi nadrzędne. Zwróć uwagę, że jeśli ta operacja się nie powiedzie, być może udało się utworzyć niektóre z niezbędnych katalogów nadrzędnych.
javadocs dla mkdir()
:
Tworzy katalog nazwany tą abstrakcyjną nazwą ścieżki.
Przykład:
File f = new File("non_existing_dir/someDir");
System.out.println(f.mkdir());
System.out.println(f.mkdirs());
ustąpi false
za pierwszym [i żaden katalog nie zostanie utworzony], i true
za drugim, a ty stworzysznon_existing_dir/someDir
mkdir()
zwraca true
lub false
? Wydaje się, że javadoc nie obejmuje tego aspektu.
mkdirs()
utworzy podaną ścieżkę katalogu w całości, gdzie mkdir()
utworzy tylko najniższy katalog, niepowodzeniem, jeśli nie może znaleźć katalogu nadrzędnego katalogu, który próbuje utworzyć.
Innymi słowy mkdir()
jest jak mkdir
i mkdirs()
jest jak mkdir -p
.
Na przykład wyobraź sobie, że mamy pusty /tmp
katalog. Poniższy kod
new File("/tmp/one/two/three").mkdirs();
utworzy następujące katalogi:
/tmp/one
/tmp/one/two
/tmp/one/two/three
Gdzie ten kod:
new File("/tmp/one/two/three").mkdir();
nie utworzy żadnych katalogów - których nie znajdzie /tmp/one/two
- i zwróci false
.
mkdir()
tworzy tylko jeden katalog na raz, jeśli jest tylko tym katalogiem nadrzędnym. w przeciwnym razie może utworzyć podkatalog (jeśli istnieje tylko określona ścieżka) i nie tworzyć żadnych katalogów pomiędzy dwoma dowolnymi katalogami. więc nie może tworzyć wielu katalogów w jednym katalogu
mkdirs()
tworzyć wiele katalogów (także między dwoma katalogami) naraz.