Groovy - E / S de fichier

Groovy fournit un certain nombre de méthodes d'assistance lors de l'utilisation d'E / S. Groovy fournit des classes plus simples pour fournir les fonctionnalités suivantes pour les fichiers.

  • Lecture de fichiers
  • Écriture dans des fichiers
  • Traversée des arbres de fichiers
  • Lire et écrire des objets de données dans des fichiers

En plus de cela, vous pouvez toujours utiliser les classes Java normales répertoriées ci-dessous pour les opérations d'E / S sur fichier.

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

Lecture de fichiers

L'exemple suivant affichera toutes les lignes d'un fichier texte dans Groovy. La méthodeeachLine est intégré à la classe File de Groovy dans le but de garantir que chaque ligne du fichier texte est lue.

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

La classe File est utilisée pour instancier un nouvel objet qui prend le nom de fichier comme paramètre. Il prend ensuite la fonction de eachLine, la place dans une variable appelée line et l'imprime en conséquence.

Si le fichier contient les lignes suivantes, elles seront imprimées.

line : Example1
line : Example2

Lecture du contenu d'un fichier sous forme de chaîne entière

Si vous souhaitez obtenir l'intégralité du contenu du fichier sous forme de chaîne, vous pouvez utiliser la propriété text de la classe de fichier. L'exemple suivant montre comment cela peut être fait.

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

Si le fichier contient les lignes suivantes, elles seront imprimées.

line : Example1 
line : Example2

Écriture dans des fichiers

Si vous souhaitez écrire dans des fichiers, vous devez utiliser la classe writer pour générer du texte dans un fichier. L'exemple suivant montre comment cela peut être fait.

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 vous ouvrez le fichier Example.txt, vous verrez les mots «Hello World» imprimés dans le fichier.

Obtenir la taille d'un fichier

Si vous souhaitez obtenir la taille du fichier, vous pouvez utiliser la propriété length de la classe de fichier pour obtenir la taille du fichier. L'exemple suivant montre comment cela peut être fait.

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

Le code ci-dessus afficherait la taille du fichier en octets.

Tester si un fichier est un répertoire

Si vous voulez voir si un chemin est un fichier ou un répertoire, vous pouvez utiliser le isFile et isDirectoryoption de la classe File. L'exemple suivant montre comment cela peut être fait.

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

Le code ci-dessus afficherait la sortie suivante -

File? false 
Directory? True

Créer un annuaire

Si vous souhaitez créer un nouveau répertoire, vous pouvez utiliser le mkdirfonction de la classe File. L'exemple suivant montre comment cela peut être fait.

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

Le répertoire E: \ Directory sera créé s'il n'existe pas.

Supprimer un fichier

Si vous souhaitez supprimer un fichier, vous pouvez utiliser la fonction de suppression de la classe File. L'exemple suivant montre comment cela peut être fait.

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

Le fichier sera supprimé s'il existe.

Copie de fichiers

Groovy fournit également la fonctionnalité pour copier le contenu d'un fichier à un autre. L'exemple suivant montre comment cela peut être fait.

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

Le fichier Example1.txt sera créé et tout le contenu du fichier Example.txt sera copié dans ce fichier.

Obtention du contenu du répertoire

Groovy fournit également la fonctionnalité permettant de répertorier les lecteurs et les fichiers d'un lecteur.

L'exemple suivant montre comment les lecteurs d'une machine peuvent être affichés à l'aide de listRoots fonction de la classe File.

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

Selon les lecteurs disponibles sur votre machine, la sortie peut varier. Sur une machine standard, la sortie serait similaire à la suivante -

C:\ 
D:\

L'exemple suivant montre comment répertorier les fichiers dans un répertoire particulier à l'aide du eachFile fonction de la classe File.

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

La sortie afficherait tous les fichiers dans le répertoire E: \ Temp

Si vous souhaitez afficher de manière récursive tous les fichiers d'un répertoire et de ses sous-répertoires, vous utiliserez le eachFileRecursefonction de la classe File. L'exemple suivant montre comment cela peut être fait.

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

La sortie afficherait tous les fichiers dans le répertoire E: \ Temp et dans ses sous-répertoires s'ils existent.