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
- Lendo arquivos com os e bufio
- Escrevendo arquivos e arquivos temporários
- Codificação e decodificação de JSON
- JSON e CSV em streaming