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.