2012-10-05 41 views
53

Estoy usando groovy para crear un archivo como "../A/B/file.txt". Para hacer esto, he creado un service y paso el file path para crearlo como argument. Este servicio luego es utilizado por un Job. El Job hará la lógica al crear el archivo en el directorio especificado. He creado manualmente el directorio "A".¿Cómo comprobar si existe un directorio que contiene un archivo?

¿Cómo crearé el directorio "B" y el archivo.txt dentro del directorio "A" a través de los códigos para crearlo automáticamente?

También necesito comprobar si los directorios "B" y "A" existen antes de crear el archivo.

Respuesta

101

para comprobar si existe una carpeta o no, puede simplemente usar el método exists():

// Create a File object representing the folder 'A/B' 
def folder = new File('A/B') 

// If it doesn't exist 
if(!folder.exists()) { 
    // Create all folders up-to and including B 
    folder.mkdirs() 
} 

// Then, write to file.txt inside B 
new File(folder, 'file.txt').withWriterAppend { w -> 
    w << "Some text\n" 
} 
8

EDIT: a partir de Java8 es mejor utilizar Files clase:

Path resultingPath = Files.createDirectories('A/B'); 

no sé si esto finalmente fija su problema, pero tiene clase File método mkdirs() que crea totalmente la ruta especificada por el archivo .

File f = new File("/A/B/"); 
f.mkdirs(); 
+1

Gracias. ¿Pero cómo crearé file.txt simultáneamente con la creación de los directorios? – chemilleX3

+0

es este f.mkdrs() no f.mkdir()? gracias .. – chemilleX3

+0

Entiendo ahora, debería ser f.mkdrs() ya que estoy creando múltiples directorios. Gracias. – chemilleX3

Cuestiones relacionadas