Zig Academy · Aula

Lendo arquivos e stdin

Transmita a entrada para o seu programa.

Aula 2 de 413 etapas

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. 🎯

Grátis para começar

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

  1. Lendo argumentos da linha de comando
  2. Lendo arquivos e stdin
  3. Escrevendo a saída e códigos de saída
  4. Empacotando e lançando o binário
← Voltar para Zig Academy