Curso de Ruby - Manipulação de Arquivos
A manipulação de arquivos é uma tarefa comum e importante em qualquer linguagem de programação. Ruby oferece uma maneira simples e poderosa de trabalhar com arquivos, permitindo abrir, ler, escrever e fechar arquivos facilmente.
Abrindo Arquivos
Abertura de Arquivo com File.open
A maneira mais comum de trabalhar com arquivos em Ruby é utilizando o método File.open
. Ele permite abrir um arquivo em diferentes modos (leitura, escrita, etc.) e realizar operações nele.
A sintaxe básica é:
file = File.open("caminho/do/arquivo", "modo")
Onde:
"caminho/do/arquivo"
é o caminho do arquivo."modo"
define como você vai interagir com o arquivo (veremos os modos abaixo).
Modos de Abertura de Arquivo
Os principais modos de abertura de arquivos são:
"r"
: Leitura (leitura simples do arquivo)."w"
: Escrita (cria um novo arquivo ou sobrescreve um arquivo existente)."a"
: Adição (abre o arquivo para adicionar conteúdo no final)."r+"
: Leitura e escrita (abre o arquivo para leitura e escrita)."w+"
: Leitura e escrita (cria um novo arquivo ou sobrescreve um existente).
Exemplo 1: Abrindo um Arquivo para Leitura
file = File.open("exemplo.txt", "r")
conteudo = file.read
puts conteudo
file.close
Saída: O conteúdo do arquivo exemplo.txt
será impresso no console.
Detalhes:
file.read
lê todo o conteúdo do arquivo.file.close
fecha o arquivo após a operação.
Exemplo 2: Abrindo um Arquivo para Escrita
file = File.open("exemplo.txt", "w")
file.puts "Olá, mundo!"
file.close
Saída: O arquivo exemplo.txt
será criado (ou sobrescrito) com o conteúdo “Olá, mundo!”.
Detalhes:
- O método
file.puts
escreve uma linha no arquivo. - Se o arquivo já existir, ele será sobrescrito.
Exemplo 3: Abrindo um Arquivo para Adicionar Conteúdo
file = File.open("exemplo.txt", "a")
file.puts "Mais uma linha."
file.close
Saída: O conteúdo “Mais uma linha.” será adicionado ao final do arquivo exemplo.txt
.
Leitura de Arquivo Linha por Linha
Se você deseja ler um arquivo linha por linha, pode usar o método each_line
.
Exemplo 4: Lendo Linha por Linha
file = File.open("exemplo.txt", "r")
file.each_line do |linha|
puts linha
end
file.close
Saída: Cada linha do arquivo será impressa no console.
Detalhes:
each_line
itera sobre cada linha do arquivo, permitindo processar linha por linha.
Trabalhando com Arquivos Usando File.read
e File.write
Em vez de abrir o arquivo explicitamente, você pode usar os métodos de leitura e escrita diretamente.
Exemplo 5: Usando File.read
para Ler Todo o Conteúdo
conteudo = File.read("exemplo.txt")
puts conteudo
Saída: O conteúdo do arquivo será impresso no console.
Exemplo 6: Usando File.write
para Escrever no Arquivo
File.write("exemplo.txt", "Nova linha no arquivo.")
Saída: O arquivo exemplo.txt
será sobrescrito com o conteúdo “Nova linha no arquivo.”
Verificando se um Arquivo Existe
Antes de tentar abrir um arquivo, é importante verificar se ele existe para evitar erros.
Exemplo 7: Verificando Existência de Arquivo
if File.exist?("exemplo.txt")
puts "O arquivo existe."
else
puts "O arquivo não existe."
end
Saída: Será impresso se o arquivo exemplo.txt
existe ou não no diretório atual.
Detalhes:
- O método
File.exist?
retornatrue
se o arquivo existir, caso contrário, retornafalse
.
Removendo um Arquivo
Se você deseja excluir um arquivo, pode usar o método File.delete
.
Exemplo 8: Deletando um Arquivo
File.delete("exemplo.txt") if File.exist?("exemplo.txt")
Saída: O arquivo exemplo.txt
será removido, se existir.
Detalhes:
File.delete
exclui o arquivo do sistema.- Verifique sempre se o arquivo existe antes de excluí-lo para evitar erros.
Criando Diretórios
Além de manipular arquivos, você pode criar diretórios usando o método Dir.mkdir
.
Exemplo 9: Criando um Diretório
Dir.mkdir("novo_diretorio") unless Dir.exist?("novo_diretorio")
Saída: Será criado o diretório novo_diretorio
, caso ele ainda não exista.
Detalhes:
Dir.mkdir
cria um diretório.Dir.exist?
verifica se um diretório já existe.
Trabalhando com Arquivos Temporários
Ruby também permite trabalhar com arquivos temporários de maneira simples. Para isso, usamos a classe Tempfile
.
Exemplo 10: Criando e Usando um Arquivo Temporário
require 'tempfile'
tempfile = Tempfile.new('exemplo')
tempfile.puts "Este é um arquivo temporário"
tempfile.rewind # Volta para o início do arquivo
puts tempfile.read # Lê o conteúdo
tempfile.close # Fecha o arquivo temporário
tempfile.unlink # Remove o arquivo temporário
Saída:
Este é um arquivo temporário
Detalhes:
Tempfile.new('prefixo')
cria um arquivo temporário.tempfile.close
etempfile.unlink
garantem que o arquivo seja fechado e excluído após o uso.
Exercício
Agora é sua vez! 💪
1️⃣ Crie um programa que leia um arquivo de texto e conte quantas linhas ele possui.
2️⃣ Crie um programa que abra um arquivo para escrita, adicione 5 linhas nele e depois leia o conteúdo.
3️⃣ Crie um arquivo temporário, escreva algo nele, leia e imprima seu conteúdo, e depois exclua o arquivo.
Se quiser, tente resolver e envie nos comentários seus códigos e suas respostas para analisarmos juntos! 🚀
Próxima aula - Tratamento de Exceções