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
- Introdução ao Node.js e NPM
- Sistema de Módulos do Node.js Explicado
- JavaScript Assíncrono e Ciclo de Eventos
- Trabalhando com o sistema de arquivos e fluxos