2012-03-22 21 views
81

¿Alguien me puede decir la diferencia entre file.mkDir() y file.mkDirs()?Diferencia entre mkdir() y mkdirs() en java para java.io.File

+22

Lea el javadoc: [mkdir] (http://docs.oracle.com/javase/7/docs/api/java/io/File.html#mkdir%28%29) vs [mkdirs] (http: //docs.oracle.com/javase/7/docs/api/java/io/File.html#mkdirs%28%29) – assylias

+0

La forma más nueva de hacerlo es utilizando los métodos estáticos Files.createDirectories y Files.createDirectory: https : //docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html – neves

Respuesta

116

mkdirs() también crea directorios principales en el camino que representa File.

javadocs para mkdirs():

Crea el directorio indicado por esta vía de acceso abstracta, incluyendo cualquier directorios superiores necesarios, pero que no existen. Tenga en cuenta que si esta operación falla, puede haber tenido éxito al crear algunos de los directorios principales necesarios .

javadocs para mkdir():

Crea el directorio indicado por esta vía de acceso abstracta.

Ejemplo:

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

rendirá false para la primera [y no dir será creado], y true para la segunda, y que habrá creado non_existing_dir/someDir

+5

Porque Oracle está rompiendo enlaces en Internet de nuevo: [mkdirs()] (http://docs.oracle .com/javase/6/docs/api/java/io/File.html # mkdirs% 28% 29) y [mkdir()] (http://docs.oracle.com/javase/6/docs/api/ java/io/File.html # mkdir% 28% 29) – MyPasswordIsLasercats

+0

@MyPasswordIsLasercats Gracias por avisarme. fijo. – amit

+1

Si el directorio ya existe, ¿'mkdir()' devuelve 'true' o' false'? El javadoc no parece cubrir este aspecto. – Arun

42

mkdirs() se cree la ruta de directorio especificada en su totalidad donde mkdir() solo creará el directorio más inferior, fallando si no puede encontrar el directorio principal de la dirección directa ory está tratando de crear.

En otras palabras mkdir() es como mkdir y mkdirs() es como mkdir -p.

Por ejemplo, imagina que tenemos un directorio /tmp vacío. El siguiente código

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

crearía los siguientes directorios:

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

Cuando este código:

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

no crearía ningún directorio, ya que no encontraría /tmp/one/two, y devolvería false.

3
mkdir() 

crea sólo un directorio a la vez, si se trata de padres que sólo uno. de lo contrario, puede crear el subdirectorio (si la ruta especificada solo existe) y no crear ningún directorio entre dos directorios.por lo que no puede crear directorios smultiple en un directorio

mkdirs() 

crear las múltiples directorios (en entre dos directorios también) a la vez.