2014-11-27 6 views
7

File.mkdirs Javadocs:mkdirs() Wartość zwracana dla już istniejących katalogów

public boolean mkdirs()

tworzy katalog o nazwie tej abstrakcyjnej ścieżki, w tym wszelkich niezbędnych lecz nieistniejących katalogów nadrzędnych. Zwróć uwagę, że jeśli ta operacja się nie powiedzie, udało się utworzyć niektóre niezbędne katalogi nadrzędne.

Zwroty: true if i only, jeśli katalog został utworzony wraz z wszystkimi niezbędnymi katalogami nadrzędnymi; false inaczej

Moje pytanie brzmi: Czy funkcja mkdirs() zwraca wartość false, jeśli niektóre katalogi, które chciał utworzyć, już istniały? Czy też zwraca wartość true, jeśli udało się utworzyć całą ścieżkę do pliku, niezależnie od tego, czy niektóre katalogi już istnieją?

+5

Czy spróbować? –

+0

Wypróbuj w plikach systemowych! –

+0

Ścieżka jest hierarchiczna jak '/ a/b/c/d' - zawsze będzie część, która już istnieje i nie może zawieść pomiędzy, ponieważ spowodowałoby to inną część, taką jak'/a/b/d/'. Tak więc "prawda" jest zwracana dopiero wtedy, gdy musi utworzyć (przynajmniej) ostatnią część ścieżki ("d") i powiodła się, części przedtem muszą istnieć w logicznej konsekwencji. – zapl

Odpowiedz

8

Powoduje false.

Z java doc: - prawda, jeśli katalog został utworzony, false w przypadku niepowodzenia lub katalog już istniał.

Powinieneś zrobić coś takiego:

if (file.mkdirs()) { 
    System.out.format("Directory %s has been created.", file.getAbsolutePath()); 

} else if (file.isDirectory()) { 
    System.out.format("Directory %s has already been created.", file.getAbsolutePath()); 

} else { 
    System.out.format("Directory %s could not be created.", file.getAbsolutePath()); 
} 
+0

Pytanie dotyczy katalogów nadrzędnych, a nie samego katalogu docelowego. – WilQu