Módulo fs no Node.js: dominando o sistema de arquivos

🗂️ Módulo fs no Node.js: dominando o sistema de arquivos

Se você trabalha com Node.js, dominar o módulo fs (File System) é essencial para criar aplicações robustas e eficientes. Ele permite interagir diretamente com arquivos e diretórios — leitura, escrita, criação e muito mais 🚀

📌 O que é o módulo fs?

O módulo fs é nativo do Node.js e oferece uma API poderosa para manipular o sistema de arquivos de forma assíncrona ou síncrona. Isso significa que você pode trabalhar com arquivos sem travar a execução da sua aplicação — algo crucial para performance em ambientes reais.

⚙️ Principais operações

📁 Criação de diretórios e arquivos

É possível criar pastas e arquivos facilmente utilizando funções como mkdir e writeFile. Isso permite estruturar dinamicamente seu projeto ou gerar arquivos automaticamente.

import fs from "fs/promises";

// Cria um diretório chamado "dados"
await fs.mkdir("dados", { recursive: true });

// Cria (ou sobrescreve) um arquivo com conteúdo inicial
await fs.writeFile("dados/registro.txt", "Primeiro registro\n", "utf-8");

console.log("Diretório e arquivo criados com sucesso!");

✏️ Escrita e atualização de conteúdo

Vemos o uso do método appendFile para adicionar conteúdo a arquivos existentes. Isso é muito útil para logs, históricos ou atualizações contínuas de dados.

import fs from "fs/promises";

// Adiciona uma nova linha sem sobrescrever o conteúdo existente
await fs.appendFile("dados/registro.txt", "Nova entrada de log\n", "utf-8");

console.log("Conteúdo adicionado com sucesso!");

📖 Leitura de arquivos

O método readFile é utilizado para acessar o conteúdo de arquivos, sendo necessário definir o encoding (como UTF-8) para leitura correta de textos.

import fs from "fs/promises";

// Lê o conteúdo do arquivo como texto
const conteudo = await fs.readFile("dados/registro.txt", "utf-8");

console.log("Conteúdo do arquivo:");
console.log(conteudo);

🔗 Integração com o módulo path

Uma prática recomendada é usar o módulo path junto com o fs, garantindo que os caminhos funcionem corretamente em qualquer sistema operacional. Isso evita erros comuns relacionados a diretórios.

import fs from "fs/promises";
import path from "path";
import { fileURLToPath } from "url";

const __dirname = path.dirname(fileURLToPath(import.meta.url));

// Caminho absoluto e portável para qualquer sistema operacional
const caminhoArquivo = path.join(__dirname, "dados", "registro.txt");

const conteudo = await fs.readFile(caminhoArquivo, "utf-8");
console.log(conteudo);

💡 Por que isso importa?

O módulo fs é a base para funcionalidades como:

  • ✔️ Upload e download de arquivos
  • ✔️ Geração de relatórios
  • ✔️ Manipulação de logs
  • ✔️ Persistência simples de dados

⚡ Assíncrono vs Síncrono

O módulo fs oferece versões assíncronas (recomendadas) e síncronas (sufixo Sync) para cada operação.

  • fs.readFile — assíncrono com callback
  • fs.readFileSync — síncrono (bloqueia a thread)
  • fs/promises — assíncrono com async/await

💡 Dica de ouro

Prefira sempre a API fs/promises com async/await. Ela mantém o código limpo, legível e não bloqueia a event loop, aproveitando ao máximo a arquitetura non-blocking do Node.js.

🔥 Em resumo

Dominar o fs significa ter controle total sobre arquivos na sua aplicação Node.js — uma habilidade essencial para qualquer desenvolvedor backend.

Voltar para Postagens Node.js / Express Ver no LinkedIn