0Pricing
Go Academy · Aula

Lendo arquivos com os e bufio

Abra, leia linhas e feche arquivos com segurança

Lendo arquivos com os e bufio é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.

os.ReadFile

os.ReadFile (Go 1.16 ou posterior) lê um arquivo inteiro em uma fatia de bytes em uma única chamada. É simples e idiomático para arquivos pequenos.

data, err := os.ReadFile("config.json")
if err != nil { log.Fatal(err) }
fmt.Println(string(data))

os.Open e fechamento manual

Para ter mais controle, abra um arquivo com os.Open (somente leitura) e feche-o com defer:

f, err := os.Open("data.txt")
if err != nil { return err }
defer f.Close()

Lendo em um buffer

Leia um bloco de bytes com f.Read(buf). Ele retorna o número de bytes lidos e io.EOF quando o arquivo chega ao fim.

buf := make([]byte, 1024)
n, err := f.Read(buf)
if err != nil && err != io.EOF { return err }
fmt.Println(string(buf[:n]))

bufio.NewReader

Envolva um arquivo em bufio.Reader para armazenar as leituras em buffer, reduzindo as chamadas de sistema. Entre os métodos estão ReadString, ReadLine e ReadByte.

reader := bufio.NewReader(f)
line, err := reader.ReadString('\n')

Lendo linha por linha com bufio.Scanner

bufio.NewScanner é a forma idiomática de ler um arquivo de texto linha por linha. A função de divisão padrão é ScanLines.

scanner := bufio.NewScanner(f)
for scanner.Scan() {
    fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil { return err }

Buffer personalizado do scanner

O buffer padrão do scanner é de 64 KiB. Para arquivos com linhas muito longas, aumente o buffer com scanner.Buffer.

buf := make([]byte, 1024*1024)
scanner.Buffer(buf, len(buf))

io.ReadAll

io.ReadAll lê de qualquer io.Reader até EOF e retorna os bytes. É útil para ler conexões de rede, corpos de resposta ou arquivos envolvidos em leitores.

data, err := io.ReadAll(f)

Lendo palavras e bytes

Substitua a função de divisão do scanner para ler palavras (bufio.ScanWords) ou bytes individuais (bufio.ScanBytes).

scanner.Split(bufio.ScanWords)
for scanner.Scan() {
    fmt.Println(scanner.Text())
}

Lendo texto estruturado

Depois de ler as linhas, use strings.Fields ou strings.Split para analisar as colunas:

for scanner.Scan() {
    fields := strings.Fields(scanner.Text())
    // fields[0], fields[1], ...
}

Erros de leitura de arquivos

Sempre verifique Err() do scanner após o laço de leitura — ele retorna o primeiro erro que não seja EOF. Um laço que termina normalmente sem ler nenhuma linha ainda pode ter encontrado um erro.

Lendo a entrada padrão nomeada

Use os.Stdin em qualquer lugar que aceite um io.Reader. Isso permite que as ferramentas de linha de comando funcionem tanto com argumentos de arquivos quanto com entrada redirecionada.

scanner := bufio.NewScanner(os.Stdin)

Verificação rápida

Qual tipo de bufio é a forma idiomática de ler um arquivo de texto linha por linha em Go?

Resumo: leitura de arquivos

Pontos principais:

  • os.ReadFile: arquivo pequeno inteiro em uma única chamada
  • bufio.Scanner: leitura linha por linha; verifique Err() após o laço
  • bufio.Reader: leituras em buffer que reduzem as chamadas de sistema
  • io.ReadAll: lê qualquer io.Reader até o fim

Perguntas Frequentes

A aula “Lendo arquivos com os e bufio” é grátis?

Sim — o texto completo de “Lendo arquivos com os e bufio” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.

O que vou aprender em “Lendo arquivos com os e bufio”?

Abra, leia linhas e feche arquivos com segurança Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Go Academy?

Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Lendo arquivos com os e bufio”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Go Academy?

Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Lendo arquivos com os e bufio
  2. Escrevendo arquivos e arquivos temporários
  3. Codificação e decodificação de JSON
  4. JSON e CSV em streaming
← Voltar para Go Academy