0Pricing
Node.js Backend Development Bootcamp · Aula

Trabalhando com o sistema de arquivos e fluxos

Aprenda a ler e gravar arquivos em Node.js usando o módulo fs, tanto de forma síncrona quanto assíncrona, e descubra como os fluxos permitem processar grandes volumes de dados com eficiência.

Trabalhando com o sistema de arquivos e fluxos é uma aula grátis de Node.js Backend Development Bootcamp no CoddyKit. Esta é a aula 4 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 Node.js Backend Development Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Node.js Backend Development Bootcamp inclui 4 aulas no total.

Why the File System Matters

A maioria dos backends eventualmente lê ou escreve arquivos em disco — logs, configurações, uploads, relatórios. O módulo integrado fs do Node lida com tudo isso; basta dar um require nele.

const fs = require('fs');
console.log(typeof fs.readFile);

Synchronous vs Asynchronous

A maioria dos métodos fs vem em duas versões: sync (como readFileSync) bloqueia o loop de eventos, async não. Em servidores, prefira sempre o async.

const fs = require('fs');
const data = fs.readFileSync('config.txt', 'utf8');
console.log(data);

Reading a File Asynchronously

O formulário de retorno de chamada clássico fornece primeiro o erro, depois os dados. Sempre verifique err antes de mexer nos dados — um arquivo ausente ou permissão incorreta vai parar lá.

const fs = require('fs');
fs.readFile('notes.txt', 'utf8', (err, data) => {
  if (err) { console.error('Failed:', err.message); return; }
  console.log('File says:', data);
});

The Promise-Based API

O Node moderno expõe uma API baseada em promises em fs/promises — combina perfeitamente com async/await e elimina totalmente o aninhamento de callbacks.

const fs = require('fs/promises');
async function load() {
  const data = await fs.readFile('notes.txt', 'utf8');
  console.log(data);
}
load();

Writing Files

Use writeFile para criar ou substituir um arquivo. Não há arquivo? Ele é criado. O arquivo existe? O seu conteúdo é totalmente substituído.

const fs = require('fs/promises');
async function save() {
  await fs.writeFile('output.txt', 'Hello from Node!');
  console.log('Saved.');
}
save();

Appending Instead of Overwriting

Para adicionar a um arquivo sem apagá-lo, use appendFile — exatamente o que você quer para arquivos de log que crescem linha por linha.

const fs = require('fs/promises');
async function log(line) {
  await fs.appendFile('app.log', line + '\n');
}
log('Server started');

Working with Paths

Caminhos codificados diretamente (hard-coded) quebram entre sistemas operacionais. O módulo path corrige isso: path.join usa o separador correto, e __dirname é a pasta do arquivo atual.

const path = require('path');
const full = path.join(__dirname, 'data', 'users.json');
console.log(full);

Checking If a File Exists

Não verifique a existência primeiro — isso arrisca condições de corrida. Apenas tente a operação e capture o erro; um arquivo ausente lança um erro com o código ENOENT.

const fs = require('fs/promises');
async function read() {
  try {
    return await fs.readFile('maybe.txt', 'utf8');
  } catch (err) {
    if (err.code === 'ENOENT') return 'default content';
    throw err;
  }
}

Why Streams Exist

Ler um arquivo de 2 GB com readFile carrega tudo para a memória — uma pane à espera de acontecer. Streams processam dados em pequenos pedaços, mantendo o uso de memória baixo.

const fs = require('fs');
const stream = fs.createReadStream('huge.log', 'utf8');
stream.on('data', chunk => console.log('Got', chunk.length, 'bytes'));

Piping Streams Together

A grande jogada com streams é o pipe: conecta um leitor diretamente a um gravador. O Node lida com a pressão contrária (backpressure), garantindo que um leitor rápido não sobrecarregue um gravador lento.

const fs = require('fs');
const read = fs.createReadStream('input.txt');
const write = fs.createWriteStream('copy.txt');
read.pipe(write);

Listing and Creating Directories

O módulo fs também gerencia pastas: mkdir cria diretórios (adicione { recursive: true } para caminhos aninhados) e readdir lista o conteúdo.

const fs = require('fs/promises');
async function setup() {
  await fs.mkdir('uploads', { recursive: true });
  const files = await fs.readdir('.');
  console.log(files);
}
setup();

Quick Check

Teste a sua compreensão de operações de arquivos.

Recap

Agora você pode trabalhar com o sistema de arquivos: as APIs síncronas/de callback/de promessa do fs, assíncrono em servidores, E/S básica, path multiplataforma e streams para arquivos grandes.

Perguntas Frequentes

A aula “Trabalhando com o sistema de arquivos e fluxos” é grátis?

Sim — o texto completo de “Trabalhando com o sistema de arquivos e fluxos” é 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 Node.js Backend Development Bootcamp, atualize para CoddyKit PRO. O curso de Node.js Backend Development Bootcamp inclui 4 aulas no total.

O que vou aprender em “Trabalhando com o sistema de arquivos e fluxos”?

Aprenda a ler e gravar arquivos em Node.js usando o módulo fs, tanto de forma síncrona quanto assíncrona, e descubra como os fluxos permitem processar grandes volumes de dados com eficiência. Você pratica Node.js Backend Development Bootcamp 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 Node.js Backend Development Bootcamp?

Nenhuma experiência prévia é necessária. Node.js Backend Development Bootcamp 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 4 de 4.

Quanto tempo leva a aula “Trabalhando com o sistema de arquivos e fluxos”?

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 Node.js Backend Development Bootcamp?

Sim. Cada aula de Node.js Backend Development Bootcamp 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. Introdução ao Node.js e NPM
  2. Sistema de Módulos do Node.js Explicado
  3. JavaScript Assíncrono e Ciclo de Eventos
  4. Trabalhando com o sistema de arquivos e fluxos
← Voltar para Node.js Backend Development Bootcamp