Trabalhando com o sistema de arquivos em JavaScript (Node.js): guia completo para iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalhando com o sistema de arquivos em JavaScript (Node.js): guia completo para iniciantes



Trabalhar com o sistema de arquivos é uma das tarefas essenciais ao criar aplicações de servidor, scripts de automação ou utilitários para processamento de dados. Em JavaScript (Node.js), existe o módulo embutido fs (File System) para isso. Este artigo apresentará os fundamentos do trabalho com arquivos e pastas no Node.js, mostrará como ler, escrever, criar e excluir arquivos, além de explicar a diferença entre métodos síncronos e assíncronos.



O que é o módulo fs no Node.js?



O módulo fs fornece uma API para interagir com o sistema de arquivos do sistema operacional. Ele permite realizar operações como:



  • Leitura do conteúdo de arquivos
  • Escrita de dados em arquivos
  • Criação e exclusão de diretórios
  • Renomeação e cópia de arquivos
  • Verificação da existência de arquivos
  • Obtenção de informações sobre arquivos (estatísticas)


Para começar a usar o módulo fs, você precisa importá-lo no seu código:



const fs = require('fs');


Todos os métodos do módulo fs estão disponíveis em três variantes: síncrona (com o sufixo Sync), assíncrona com callbacks e assíncrona baseada em promessas (usando fs.promises). Neste guia, focaremos na abordagem moderna usando async/await.



Leitura de arquivos no Node.js



A maneira mais simples de ler o conteúdo de um arquivo é usar o método readFile do fs.promises. Veja um exemplo:



const fs = require('fs').promises;

async function readFileExample() { try { const data = await fs.readFile('example.txt', 'utf8'); console.log('Conteúdo do arquivo:', data); } catch (error) { console.error('Erro ao ler o arquivo:', error.message); }}

readFileExample();


Neste exemplo:

  • Importamos fs.promises — a versão do módulo que retorna promessas.
  • A função readFile recebe o caminho do arquivo e a codificação (neste caso, 'utf8').
  • Se o arquivo não existir, um erro será lançado, que tratamos no bloco catch.


Se você precisar ler um arquivo de forma síncrona (em scripts simples), use readFileSync:



const fs = require('fs');

try { const data = fs.readFileSync('example.txt', 'utf8'); console.log(data);} catch (error) { console.error(error.message);}


Importante: Métodos síncronos bloqueiam a execução do código até que a operação seja concluída. Em aplicações de servidor (por exemplo, no Express), sempre use métodos assíncronos para não bloquear o processamento de outras requisições.



Escrita de dados em arquivos



Para escrever dados em um arquivo, usa-se o método writeFile. Se o arquivo existir, seu conteúdo será sobrescrito. Se o arquivo não existir, ele será criado automaticamente.



const fs = require('fs').promises;

async function writeFileExample() { try { const content = 'Olá, mundo! Esta é uma gravação de teste.'; await fs.writeFile('output.txt', content, 'utf8'); console.log('Arquivo gravado com sucesso!'); } catch (error) { console.error('Erro de gravação:', error.message); }}

writeFileExample();


Se você quiser adicionar dados ao final de um arquivo existente (sem sobrescrevê-lo), use o método appendFile:



const fs = require('fs').promises;

async function appendToFile() { try { await fs.appendFile('log.txt', `Nova entrada: ${new Date()}`, 'utf8'); console.log('Dados adicionados ao final do arquivo'); } catch (error) { console.error('Erro:', error.message);\

Blogs

Book Recommendations