Groovy - E / S de archivos

Groovy proporciona varios métodos de ayuda cuando se trabaja con E / S. Groovy proporciona clases más sencillas para proporcionar las siguientes funcionalidades para archivos.

  • Leer archivos
  • Escribir en archivos
  • Atravesando árboles de archivos
  • Leer y escribir objetos de datos en archivos

Además de esto, siempre puede utilizar las clases Java normales que se enumeran a continuación para las operaciones de E / S de archivos.

  • java.io.File
  • java.io.InputStream
  • java.io.OutputStream
  • java.io.Reader
  • java.io.Writer

Leer archivos

El siguiente ejemplo generará todas las líneas de un archivo de texto en Groovy. El métodoeachLine está integrado en la clase File en Groovy con el fin de garantizar que se lea cada línea del archivo de texto.

import java.io.File 
class Example { 
   static void main(String[] args) { 
      new File("E:/Example.txt").eachLine {  
         line -> println "line : $line"; 
      } 
   } 
}

La clase File se utiliza para crear una instancia de un nuevo objeto que toma el nombre del archivo como parámetro. Luego toma la función de cada línea, la coloca en una variable llamada línea y la imprime en consecuencia.

Si el archivo contiene las siguientes líneas, se imprimirán.

line : Example1
line : Example2

Leer el contenido de un archivo como una cadena completa

Si desea obtener todo el contenido del archivo como una cadena, puede usar la propiedad text de la clase de archivo. El siguiente ejemplo muestra cómo se puede hacer esto.

class Example { 
   static void main(String[] args) { 
      File file = new File("E:/Example.txt") 
      println file.text 
   } 
}

Si el archivo contiene las siguientes líneas, se imprimirán.

line : Example1 
line : Example2

Escribir en archivos

Si desea escribir en archivos, debe usar la clase de escritor para generar texto en un archivo. El siguiente ejemplo muestra cómo se puede hacer esto.

import java.io.File 
class Example { 
   static void main(String[] args) { 
      new File('E:/','Example.txt').withWriter('utf-8') { 
         writer -> writer.writeLine 'Hello World' 
      }  
   } 
}

Si abre el archivo Example.txt, verá las palabras "Hello World" impresas en el archivo.

Obtener el tamaño de un archivo

Si desea obtener el tamaño del archivo, puede usar la propiedad length de la clase de archivo para obtener el tamaño del archivo. El siguiente ejemplo muestra cómo se puede hacer esto.

class Example {
   static void main(String[] args) {
      File file = new File("E:/Example.txt")
      println "The file ${file.absolutePath} has ${file.length()} bytes"
   } 
}

El código anterior mostraría el tamaño del archivo en bytes.

Prueba de si un archivo es un directorio

Si desea ver si una ruta es un archivo o un directorio, puede usar la isFile y isDirectoryopción de la clase Archivo. El siguiente ejemplo muestra cómo se puede hacer esto.

class Example { 
   static void main(String[] args) { 
      def file = new File('E:/') 
      println "File? ${file.isFile()}" 
      println "Directory? ${file.isDirectory()}" 
   } 
}

El código anterior mostraría el siguiente resultado:

File? false 
Directory? True

Crear un directorio

Si desea crear un nuevo directorio, puede usar el mkdirfunción de la clase File. El siguiente ejemplo muestra cómo se puede hacer esto.

class Example {
   static void main(String[] args) {
      def file = new File('E:/Directory')
      file.mkdir()
   } 
}

Se creará el directorio E: \ Directory si no existe.

Eliminar un archivo

Si desea eliminar un archivo, puede utilizar la función de eliminación de la clase Archivo. El siguiente ejemplo muestra cómo se puede hacer esto.

class Example {
   static void main(String[] args) {
      def file = new File('E:/Example.txt')
      file.delete()
   } 
}

El archivo se eliminará si existe.

Copiando documentos

Groovy también proporciona la funcionalidad de copiar el contenido de un archivo a otro. El siguiente ejemplo muestra cómo se puede hacer esto.

class Example {
   static void main(String[] args) {
      def src = new File("E:/Example.txt")
      def dst = new File("E:/Example1.txt")
      dst << src.text
   } 
}

Se creará el archivo Example1.txt y todo el contenido del archivo Example.txt se copiará en este archivo.

Obtener el contenido del directorio

Groovy también proporciona la funcionalidad de enumerar las unidades y archivos en una unidad.

El siguiente ejemplo muestra cómo se pueden mostrar las unidades de una máquina mediante el listRoots función de la clase File.

class Example { 
   static void main(String[] args) { 
      def rootFiles = new File("test").listRoots() 
      rootFiles.each { 
         file -> println file.absolutePath 
      }
   }
}

Dependiendo de las unidades disponibles en su máquina, la salida puede variar. En una máquina estándar, la salida sería similar a la siguiente:

C:\ 
D:\

El siguiente ejemplo muestra cómo listar los archivos en un directorio en particular usando el eachFile función de la clase File.

class Example {
   static void main(String[] args) {
      new File("E:/Temp").eachFile() {  
         file->println file.getAbsolutePath()
      }
   } 
}

La salida mostraría todos los archivos en el directorio E: \ Temp

Si desea mostrar de forma recursiva todos los archivos en un directorio y sus subdirectorios, entonces debe usar la eachFileRecursefunción de la clase File. El siguiente ejemplo muestra cómo se puede hacer esto.

class Example { 
   static void main(String[] args) {
      new File("E:/temp").eachFileRecurse() {
         file -> println file.getAbsolutePath()
      }
   }
}

La salida mostraría todos los archivos en el directorio E: \ Temp y en sus subdirectorios si existen.