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.