Groovy - Arquivo I / O

O Groovy fornece vários métodos auxiliares ao trabalhar com E / S. O Groovy fornece classes mais fáceis para fornecer as seguintes funcionalidades para arquivos.

  • Lendo arquivos
  • Gravando em arquivos
  • Percorrendo árvores de arquivos
  • Ler e gravar objetos de dados em arquivos

Além disso, você sempre pode usar as classes Java normais listadas abaixo para operações de E / S de arquivo.

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

Lendo arquivos

O exemplo a seguir produzirá todas as linhas de um arquivo de texto no Groovy. O métodoeachLine está embutido na classe File no Groovy com a finalidade de garantir que cada linha do arquivo de texto seja lida.

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

A classe File é usada para instanciar um novo objeto que leva o nome do arquivo como parâmetro. Ele então pega a função de eachLine, coloca-a em uma variável chamada line e a imprime de acordo.

Se o arquivo contiver as seguintes linhas, elas serão impressas.

line : Example1
line : Example2

Lendo o conteúdo de um arquivo como uma string inteira

Se você deseja obter todo o conteúdo do arquivo como uma string, pode usar a propriedade text da classe do arquivo. O exemplo a seguir mostra como isso pode ser feito.

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

Se o arquivo contiver as seguintes linhas, elas serão impressas.

line : Example1 
line : Example2

Escrevendo em arquivos

Se você deseja gravar em arquivos, você precisa usar a classe de gravador para enviar texto para um arquivo. O exemplo a seguir mostra como isso pode ser feito.

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 você abrir o arquivo Example.txt, verá as palavras “Hello World” impressas no arquivo.

Obtendo o Tamanho de um Arquivo

Se você deseja obter o tamanho do arquivo, pode-se usar a propriedade length da classe de arquivo para obter o tamanho do arquivo. O exemplo a seguir mostra como isso pode ser feito.

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

O código acima mostraria o tamanho do arquivo em bytes.

Testando se um arquivo é um diretório

Se você quiser ver se um caminho é um arquivo ou diretório, pode-se usar o isFile e isDirectoryopção da classe Arquivo. O exemplo a seguir mostra como isso pode ser feito.

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

O código acima mostraria a seguinte saída -

File? false 
Directory? True

Criação de um diretório

Se você deseja criar um novo diretório, você pode usar o mkdirfunção da classe File. O exemplo a seguir mostra como isso pode ser feito.

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

O diretório E: \ Directory será criado se não existir.

Excluindo um Arquivo

Se você deseja excluir um arquivo, pode usar a função de exclusão da classe Arquivo. O exemplo a seguir mostra como isso pode ser feito.

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

O arquivo será excluído se existir.

Copiando arquivos

O Groovy também oferece a funcionalidade de copiar o conteúdo de um arquivo para outro. O exemplo a seguir mostra como isso pode ser feito.

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

O arquivo Example1.txt será criado e todo o conteúdo do arquivo Example.txt será copiado para este arquivo.

Obtendo o conteúdo do diretório

O Groovy também fornece a funcionalidade de listar as unidades e arquivos em uma unidade.

O exemplo a seguir mostra como as unidades em uma máquina podem ser exibidas usando o listRoots função da classe File.

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

Dependendo das unidades disponíveis em sua máquina, a saída pode variar. Em uma máquina padrão, a saída seria semelhante à seguinte -

C:\ 
D:\

O exemplo a seguir mostra como listar os arquivos em um diretório específico usando o eachFile função da classe File.

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

A saída exibiria todos os arquivos no diretório E: \ Temp

Se você quiser exibir recursivamente todos os arquivos em um diretório e seus subdiretórios, use o eachFileRecursefunção da classe File. O exemplo a seguir mostra como isso pode ser feito.

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

A saída exibiria todos os arquivos no diretório E: \ Temp e em seus subdiretórios, se existirem.