Diferența dintre mkdir() și mkdirs() în java pentru java.io.File [closed] (Programare, Java, Android, Director, Fișier Android)

Krishna Kankal a intrebat.

Îmi poate spune cineva care este diferența dintre aceste două metode:

  • file.mkdir()
  • file.mkdirs()

Comentarii

    25

  • Citiți javadoc-ul: mkdir vs mkdirs –  > Por assylias.
  • Cea mai nouă modalitate de a face acest lucru este utilizarea metodelor statice Files.createDirectories și Files.createDirectory: docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html –  > Por neves.
  • Puteți obține „File not supported” (Fișier neacceptat) după utilizarea mkdir. –  > Por user7856586.
  • Există vreo diferență de performanță între cele două? Mai ales atunci când directoarele părinte există deja? –  > Por Joshua Pinter.
3 răspunsuri
amit

mkdirs() creează, de asemenea, creează directoare părinte în calea aceasta File reprezintă.

javadocs pentru mkdirs():

Creează directorul numit de acest nume de cale abstractă, inclusiv toate directoarele părinte necesare, dar inexistente. Rețineți că, dacă această operațiune eșuează, este posibil să fi reușit să creeze unele dintre directoarele părinte necesare.

javadocs pentru mkdir():

Creează directorul numit de acest nume de cale abstractă.

Exemplu:

File  f = new File("non_existing_dir/someDir");
System.out.println(f.mkdir());
System.out.println(f.mkdirs());

va produce false pentru primul [și nu va fi creat niciun director], iar true pentru al doilea, și se va crea non_existing_dir/someDir

Comentarii

  • Pentru că Oracle rupe din nou legăturile pe internet: mkdirs() și mkdir() –  > Por MyPasswordIsLasercats.
  • @MyPasswordIsLasercats Mulțumesc că m-ați anunțat. fixat. –  > Por amit.
  • În cazul în care directorul există deja, nu mkdir() întoarce true sau false? Javadoc-ul nu pare să acopere acest aspect. –  > Por Arun.
  • @Arun, conform Javadoc-ului, se returnează „true if and only if the directory was created”, ceea ce presupun că este ambiguu în ceea ce privește dacă a fost creat de acest apel sau mai devreme. Acest răspuns sugerează prima variantă. –  > Por Samuel Edwin Ward.
  • mkdir și mkdirs returnează ambele false în cazul meu -.-. Funcționează dacă folosesc o dublă backslash „
    . DAR: dacă fac „.toURI()” după care primesc: file:/Users/MyName/Desktop/%5Cnon_existing_dir%5CsomeDir/ și dacă fac „.getPath()” primesc „
    on_existing_dirsomeDir” și dacă fac „.getCanonicalPath()” primesc /Users/MyName/Desktop/
    on_existing_dirsomeDir –  > Por Aerox.
Dave Webb

mkdirs() va crea calea de directoare specificată în întregime, unde mkdir() va crea doar directorul cel mai de jos, eșuând dacă nu poate găsi directorul părinte al directorului pe care încearcă să-l creeze.

Cu alte cuvinte mkdir() este ca și cum mkdir și mkdirs() este ca mkdir -p.

De exemplu, să ne imaginăm că avem un obiect gol /tmp gol. Următorul cod

new File("/tmp/one/two/three").mkdirs();

ar crea următoarele directoare:

  • /tmp/one
  • /tmp/one/two
  • /tmp/one/two/three

În cazul în care acest cod:

new File("/tmp/one/two/three").mkdir();

nu ar crea niciun director – deoarece nu ar găsi /tmp/one/two – și ar returna false.

mkdir()

creează doar un singur director la un moment dat, dacă este părinte, doar acela. în caz contrar, poate crea subdirectoare (dacă calea specificată există) și nu creează niciun director între două directoare. deci nu poate crea mai multe directoare într-un singur director.

mkdirs()

să creeze mai multe directoare (și între două directoare) la un moment dat.