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ą Filereprezentuje.
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 falseza pierwszym [i żaden katalog nie zostanie utworzony], i trueza drugim, a ty stworzysznon_existing_dir/someDir
mkdir()zwraca truelub 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 mkdiri mkdirs()jest jak mkdir -p.
Na przykład wyobraź sobie, że mamy pusty /tmpkatalog. Poniższy kod
new File("/tmp/one/two/three").mkdirs();
utworzy następujące katalogi:
/tmp/one/tmp/one/two/tmp/one/two/threeGdzie 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.