Differenza tra mkdir () e mkdirs () in java per java.io.File [chiuso]


123

Qualcuno può dirmi la differenza tra questi due metodi:

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

23
Leggi il javadoc: mkdir vs mkdirs
assylias

2
Il modo più recente per farlo è utilizzare i metodi statici Files.createDirectories e Files.createDirectory: docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html
neves

È possibile ottenere "File non supportato" dopo aver utilizzato mkdir.
user7856586

Ci sono differenze di prestazioni tra i due? Soprattutto quando le directory principali esistono già?
Joshua Pinter

Risposte:


158

mkdirs()crea anche le directory padre nel percorso che Filerappresenta.

javadocs per mkdirs():

Crea la directory denominata da questo percorso astratto, incluse tutte le directory padre necessarie ma inesistenti. Notare che se questa operazione fallisce, potrebbe essere riuscita a creare alcune delle directory principali necessarie.

javadocs per mkdir():

Crea la directory denominata da questo percorso astratto.

Esempio:

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

cederà falseper il primo [e non verrà creata nessuna directory], e trueper il secondo, e tu avrai creatonon_existing_dir/someDir


7
Perché oracle sta nuovamente interrompendo i collegamenti in Internet: mkdirs () e mkdir ()
MyPasswordIsLasercats

@MyPasswordIsLasercats Grazie per avermelo informato. fisso.
amit

1
Se la directory esiste già, mkdir()restituisce trueo false? Il javadoc non sembra coprire questo aspetto.
Arun

@ Arun, secondo Javadoc restituisce "vero se e solo se la directory è stata creata", che suppongo sia ambiguo sul fatto che sia stato creato da questa chiamata o prima. Questa risposta suggerisce il primo.
Samuel Edwin Ward

mkdir e mkdirs restituiscono entrambi false nel mio caso -.-. Funziona se utilizzo la doppia barra rovesciata "\\" MA: se faccio ".toURI ()" dopo di ciò ricevo: file: / Users / MyName / Desktop /% 5Cnon_existing_dir% 5CsomeDir / e se lo faccio ".getPath () "ricevo" \ non_existing_dir \ someDir "e se lo faccio" .getCanonicalPath () "ricevo / Users / MyName / Desktop / \ non_existing_dir \ someDir
Aerox

62

mkdirs()creerà il percorso della directory specificato nella sua interezza, dove mkdir()creerà solo la directory più in basso, fallendo se non riesce a trovare la directory principale della directory che sta cercando di creare.

In altre parole mkdir()è come mkdired mkdirs()è come mkdir -p.

Ad esempio, immagina di avere una /tmpdirectory vuota . Il codice seguente

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

creerebbe le seguenti directory:

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

Dove questo codice:

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

non creerebbe alcuna directory - poiché non la troverebbe /tmp/one/two- e tornerebbe false.


4
mkdir()

crea solo una directory alla volta, se è genitore solo quella. altrimenti può creare la sottodirectory (se esiste solo il percorso specificato) e non creare alcuna directory tra due directory. quindi non può creare più directory in una directory

mkdirs()

creare più directory (anche tra due directory) alla volta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.