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.

  1. Crie o arquivo salvar_sobrevivente.go na pasta src/:
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

  1. Abra le terminal integrado.
  2. Execute: go run salvar_sobrevivente.go
  3. Abra o arquivo diario.txt que 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))
}

Capitulo Anterior | Proximo Capitulo