23/100 Dias de Golang - Manipulação de arquivos
Table of Contents
#
Manipulação de arquivos
Clássico conteúdo de manipulação de arquivos, como fazer a leitura, como escrever, como escreve com append, como ler linha a linha, como renomear um arquivo, como deletar… O famoso CRUD dos arquivos.
#
Criar e escrever
Para criar um arquivo, vamos usar a função os.Create(nomeArquivo)
da biblioteca padrão os
.
nomeArquivo := "meu_arquivo.txt"
arquivo, err := os.Create(nomeArquivo)
if err != nil {
panic(err)
}
Lembrar de sempre quando trabalhar com arquivos usar o defer
. O defer atrasa a execução da função que o segue até que a função em que ele está seja concluída. No caso de arquivo.Close()
, isso garante que o arquivo será fechado corretamente, independentemente de como a função termina. O mais legal é que isso é independente de como a função finaliza, seja com com um erro o de forma normal.
defer arquivo.Close()
Agora com o arquivo criado, vamos escrever uma mensagem nele com a função WriteString()
, passando uma string como parâmetro.
conteudo := "Olá, Golang!\nAcesse o victorstein.dev para mais conteúdos\n"
_, err = arquivo.WriteString(conteudo)
if err != nil {
log.Fatalf("Erro ao escrever no arquivo %s: %v\n", nomeArquivo, err)
}
#
Deletar
Para deletar um arquivo, vamos usar a função os.Remove(nomeArquivo)
da biblioteca padrão os
.
err := os.Remove(nomeArquivo)
if err != nil {
panic(err)
}
#
Ler o arquivo
Para ler o arquivo, vamos usar a função os.ReadFile(nomeArquivo)
.
conteudoBytes, err := os.ReadFile(nomeArquivo)
if err != nil {
panic(err)
}
print(string(conteudoBytes))
#
Atualizar o arquivo
Vamos fazer uma análise desse programa:
nomeArquivo := "meu_arquivo.txt"
novoConteudo := "Este é o conteúdo ATUALIZADO.\nTodo o conteúdo anterior foi substituído.\n"
arquivo, err := os.OpenFile(nomeArquivo, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
if err != nil {
log.Fatalf("Erro ao abrir o arquivo %s para sobrescrita: %v\n", nomeArquivo, err)
}
defer arquivo.Close()
_, err = arquivo.WriteString(novoConteudo)
Veja que aqui abrimos o arquivo com a função os.OpenFile()
.Ela serve para abrir ou criar um arquivo com controle detalhado sobre o modo de acesso e as permissões. Com essa função temos maior nível de detalhe e controle ao arquivo, definimos exatamente como o arquivo será acessado usando as flags (os.O_RDONLY
para somente leitura, os.O_WRONLY
para escrita, os.O_RDWR
para leitura/escrita, os.O_APPEND
para anexar, os.O_CREATE
para criar, os.O_TRUNC
para truncar, esvaziar um arquivo).