Groovy - File I / O

Groovy fornisce una serie di metodi di supporto quando si lavora con I / O. Groovy fornisce classi più semplici per fornire le seguenti funzionalità per i file.

  • Lettura di file
  • Scrittura su file
  • Attraversamento di alberi di file
  • Lettura e scrittura di oggetti dati su file

Oltre a ciò, è sempre possibile utilizzare le normali classi Java elencate di seguito per le operazioni di I / O su file.

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

Lettura di file

L'esempio seguente produrrà tutte le righe di un file di testo in Groovy. Il metodoeachLine è integrato nella classe File in Groovy allo scopo di garantire che ogni riga del file di testo venga letta.

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

La classe File viene utilizzata per creare un'istanza di un nuovo oggetto che prende il nome del file come parametro. Quindi prende la funzione di eachLine, la inserisce in una variabile chiamata line e la stampa di conseguenza.

Se il file contiene le seguenti righe, verranno stampate.

line : Example1
line : Example2

Lettura del contenuto di un file come un'intera stringa

Se vuoi ottenere l'intero contenuto del file come una stringa, puoi usare la proprietà text della classe file. L'esempio seguente mostra come eseguire questa operazione.

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

Se il file contiene le seguenti righe, verranno stampate.

line : Example1 
line : Example2

Scrittura su file

Se vuoi scrivere su file, devi usare la classe writer per produrre testo in un file. L'esempio seguente mostra come eseguire questa operazione.

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

Se apri il file Example.txt, vedrai le parole "Hello World" stampate sul file.

Ottenere le dimensioni di un file

Se si desidera ottenere la dimensione del file, è possibile utilizzare la proprietà length della classe file per ottenere la dimensione del file. L'esempio seguente mostra come eseguire questa operazione.

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

Il codice sopra mostrerebbe la dimensione del file in byte.

Verifica se un file è una directory

Se vuoi vedere se un percorso è un file o una directory, puoi usare il isFile e isDirectoryopzione della classe File. L'esempio seguente mostra come eseguire questa operazione.

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

Il codice sopra mostrerebbe il seguente output:

File? false 
Directory? True

Creazione di una directory

Se vuoi creare una nuova directory puoi usare il file mkdirfunzione della classe File. L'esempio seguente mostra come eseguire questa operazione.

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

La directory E: \ Directory verrà creata se non esiste.

Eliminazione di un file

Se vuoi cancellare un file puoi usare la funzione cancella della classe File. L'esempio seguente mostra come eseguire questa operazione.

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

Il file verrà eliminato se esiste.

Copia di file

Groovy fornisce anche la funzionalità per copiare il contenuto da un file a un altro. L'esempio seguente mostra come eseguire questa operazione.

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

Il file Example1.txt verrà creato e tutto il contenuto del file Example.txt verrà copiato in questo file.

Recupero del contenuto della directory

Groovy fornisce anche la funzionalità per elencare le unità e i file in un'unità.

L'esempio seguente mostra come visualizzare le unità su una macchina utilizzando l'estensione listRoots funzione della classe File.

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

A seconda delle unità disponibili sulla macchina, l'output potrebbe variare. Su una macchina standard l'output sarebbe simile al seguente:

C:\ 
D:\

L'esempio seguente mostra come elencare i file in una determinata directory utilizzando l'estensione eachFile funzione della classe File.

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

L'output visualizzerà tutti i file nella directory E: \ Temp

Se vuoi visualizzare in modo ricorsivo tutti i file in una directory e nelle sue sottodirectory, dovresti usare il eachFileRecursefunzione della classe File. L'esempio seguente mostra come eseguire questa operazione.

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

L'output visualizzerà tutti i file nella directory E: \ Temp e nelle sue sottodirectory, se esistono.