Diferencia entre mkdir () y mkdirs () en java para java.io.File [cerrado]


123

¿Alguien puede decirme la diferencia entre estos dos métodos:

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

23
Lea el javadoc: mkdir vs mkdirs
assylias

2
La nueva manera de hacerlo es usando Files.createDirectories y métodos estáticos Files.createDirectory: docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html
neves

Puede obtener "Archivo no compatible" después de usar mkdir.
user7856586

¿Hay alguna diferencia de rendimiento entre los dos? ¿Especialmente cuando los directorios principales ya existen?
Joshua Pinter el

Respuestas:


158

mkdirs()también crea directorios principales en la ruta que esto Filerepresenta.

javadocs para mkdirs():

Crea el directorio nombrado por este nombre de ruta abstracto, incluidos los directorios principales necesarios pero no existentes. Tenga en cuenta que si esta operación falla, puede haber tenido éxito en la creación de algunos de los directorios principales necesarios.

javadocs para mkdir():

Crea el directorio nombrado por este nombre de ruta abstracto.

Ejemplo:

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

rendirá falsepara el primero [y no se creará ningún directorio], y truepara el segundo, y habrá creadonon_existing_dir/someDir


77
Porque Oracle está rompiendo enlaces en Internet nuevamente: mkdirs () y mkdir ()
MyPasswordIsLasercats

@MyPasswordIsLasercats Gracias por hacérmelo saber. fijo.
amit

1
Si el directorio ya existe, ¿ mkdir()devuelve trueo false? El javadoc no parece cubrir este aspecto.
Arun

@Arun, de acuerdo con el Javadoc, devuelve "verdadero si y solo si se creó el directorio", lo que supongo que es ambiguo en cuanto a si fue creado por esta llamada o antes. Esta respuesta sugiere la primera.
Samuel Edwin Ward

mkdir y mkdirs devuelven ambos falsos en mi caso -.-. Funciona si uso la barra invertida doble "\\" PERO: si lo hago ".toURI ()" después de eso recibo: archivo: / Users / MyName / Desktop /% 5Cnon_existing_dir% 5CsomeDir / y si lo hago ".getPath () "Recibo" \ non_existing_dir \ someDir "y si lo hago" .getCanonicalPath () "recibo / Users / MyName / Desktop / \ non_existing_dir \ someDir
Aerox

62

mkdirs()creará la ruta de directorio especificada en su totalidad donde mkdir()solo creará el directorio más inferior, fallando si no puede encontrar el directorio padre del directorio que está tratando de crear.

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

Por ejemplo, imagine que tenemos un /tmpdirectorio 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

Donde este código:

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

no crearía ningún directorio, como no lo encontraría /tmp/one/two, y volvería false.


4
mkdir()

crea un solo directorio a la vez, si es padre ese solo. 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 múltiples en un directorio

mkdirs()

cree los directorios múltiples (entre dos directorios también) a la vez.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.