Lendo arquivos e stdin
Transmita a entrada para o seu programa.
Lendo arquivos e stdin é uma aula grátis de Zig Academy no CoddyKit. Esta é a aula 2 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 Zig Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Zig Academy inclui 4 aulas no total.
As ferramentas consomem entradas
Uma CLI útil normalmente lê alguma coisa: um arquivo que você indica ou texto redirecionado para ela. Zig oferece maneiras claras e explícitas de fazer as duas coisas. 📥
Abra um arquivo pelo caminho
Use std.fs.cwd para obter o diretório atual e depois openFile para abrir, para leitura, um caminho relativo a ele.
const file = try std.fs.cwd().openFile(path, .{});Feche sempre o que abrir
Um arquivo aberto é um recurso que pertence a você. Combine a abertura com um defer file.close() para que ele seja liberado independentemente de como a função terminar.
defer file.close();Leia o arquivo inteiro
Para carregar tudo de uma vez, chame readToEndAlloc com um alocador e um limite de tamanho. Ele retorna os bytes como uma fatia que pertence a você.
const data = try file.readToEndAlloc(a, 1024 * 1024);Libere os bytes depois
Essa fatia retornada vive na área de memória dinâmica, então ela pertence a você. Adicione defer a.free(data) para liberar o buffer quando terminar de usá-lo.
defer a.free(data);O limite de tamanho é uma proteção
Esse argumento de quantidade máxima de bytes protege você contra um arquivo enorme consumindo toda a memória. Escolha um limite adequado à entrada realista da sua ferramenta.
Obtenha a entrada padrão
Para ler texto redirecionado, use std.io.getStdIn. Ele devolve um arquivo, assim como um arquivo que você abriu, então as mesmas chamadas de leitura se aplicam.
const stdin = std.io.getStdIn();Leia toda a entrada padrão
Solicite um reader à entrada padrão e chame readAllAlloc. Isso reúne tudo o que foi redirecionado até o fim da entrada em uma única fatia que pertence a você.
const input = try stdin.reader().readAllAlloc(a, 1024 * 1024);Leia linha por linha
Para trabalhar em fluxo, readUntilDelimiterOrEof de um reader coloca uma linha por vez em um buffer e retorna null quando a entrada termina.
const line = try r.readUntilDelimiterOrEof(&buf, '\n');Use um buffer para ganhar velocidade
Cada leitura bruta pode ser uma chamada de sistema. Envolva um reader em std.io.bufferedReader para agrupar muitas leituras pequenas em menos operações e torná-las mais rápidas.
var br = std.io.bufferedReader(file.reader());Arquivo ou entrada padrão: o mesmo código
Como um arquivo e a entrada padrão expõem um reader, sua lógica de análise não precisa saber qual deles recebeu. Esse é um design limpo e reutilizável. ✨
Verificação rápida
Lembre-se de como transformar os bytes de um arquivo em algo que você possa usar.
Recapitulação
Você abriu arquivos com openFile, leu tudo ou linha por linha, obteve texto da entrada padrão e liberou todos os buffers. Entrada processada. 🎯
Aprenda Zig com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “Lendo arquivos e stdin” é grátis?
Sim — o texto completo de “Lendo arquivos e stdin” é 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 Zig Academy, atualize para CoddyKit PRO. O curso de Zig Academy inclui 4 aulas no total.
O que vou aprender em “Lendo arquivos e stdin”?
Transmita a entrada para o seu programa. Você pratica Zig 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 Zig Academy?
Nenhuma experiência prévia é necessária. Zig 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 2 de 4.
Quanto tempo leva a aula “Lendo arquivos e stdin”?
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 Zig Academy?
Sim. Cada aula de Zig 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 argumentos da linha de comando
- Lendo arquivos e stdin
- Escrevendo a saída e códigos de saída
- Empacotando e lançando o binário