Capítulo 14: Arquivos (Leitura e Escrita) 📝🧟
Neste capítulo, vamos aprender a salvar e ler informações em arquivos de texto externos no Go, usando o tema The Last of Us!
📖 Por que usar Arquivos?
Para salvar o progresso ou manter um diário de sobrevivência no apocalipse, precisamos gravar os dados no disco! No Go, as funções de arquivo retornam um erro que devemos verificar sempre.
📖 Exemplo Guiado: Registro de Sobreviventes
Vamos criar um programa que grava o nome de um sobrevivente em um arquivo chamado diario.txt.
- Crie o arquivo
salvar_sobrevivente.gona pastasrc/:
package main
import (
"fmt"
"os" // Pacote para interagir com o sistema operacional
)
func main() {
// Tentando criar o arquivo
arquivo, err := os.Create("diario.txt")
if err != nil {
fmt.Println("Erro ao criar arquivo:", err)
return // Para a execução se deu erro
}
// Garante que o arquivo será fechado no final da função
defer arquivo.Close()
// Escrevendo no arquivo
_, err = arquivo.WriteString("Registro de Sobrevivente\nNome: Joel\nStatus: Saudavel\n")
if err != nil {
fmt.Println("Erro ao escrever no arquivo:", err)
return
}
fmt.Println("Dados salvos no diario.txt com sucesso!")
}🕹️ Como Executar e Testar no VS Code
- Abra le terminal integrado.
- Execute:
go run salvar_sobrevivente.go - Abra o arquivo
diario.txtque foi criado na mesma pasta!
📊 Ilustração Visual: Fluxo de Escrita
Veja como o Go trata a segurança na escrita de arquivos:
graph LR A[Programa] -->|1. os.Create| B{Sucesso?} B -->|Sim| C[Escreve os dados] B -->|Não| D[Mostra Erro]
🛠️ Prática Obrigatória 1: Lendo o Arquivo
Pesquise como usar os.ReadFile para ler o conteúdo de um arquivo. Crie um programa chamado ler_diario.go que leia o arquivo diario.txt criado anteriormente e exiba o conteúdo no terminal!
🔑 Gabarito de Código
Prática 1: ler_diario.go
package main
import (
"fmt"
"os"
)
func main() {
// Lê todo o conteúdo do arquivo
conteudo, err := os.ReadFile("diario.txt")
if err != nil {
fmt.Println("Erro ao ler o arquivo:", err)
return
}
fmt.Println("--- Conteudo do Diario ---")
// Convertendo os bytes lidos para string
fmt.Println(string(conteudo))
}