Capítulo 13: Manipulação de Arquivos (Módulo FS) 💾🧟

Neste capítulo, vamos aprender a ler e escrever arquivos no disco usando o módulo nativo do Node.js chamado FS (File System), com o tema The Last of Us!


📖 O que é o Módulo FS?

O Node.js possui um módulo chamado fs que nos permite interagir com o sistema de arquivos do computador. Podemos usar a versão clássica (com callbacks) ou a versão moderna (com Promises e async/await). Vamos usar a versão moderna!


📖 Exemplo Guiado: Salvando o Diário

Vamos criar um programa que salva um registro de sobrevivente e depois lê esse mesmo arquivo.

  1. Crie o arquivo diario_sobrevivente.js na pasta src/:
// Importando a versão baseada em Promises do módulo FS
const fs = require('fs').promises;
 
const gerenciarDiario = async () => {
    const conteudo = "Registro de Sobrevivente\nNome: Joel\nStatus: Saudavel";
    
    try {
        // 1. Escrevendo no arquivo
        await fs.writeFile('diario.txt', conteudo);
        console.log("Diario salvo com sucesso!");
        
        // 2. Lendo o arquivo
        const dadosLidos = await fs.readFile('diario.txt', 'utf-8');
        console.log("\n--- Lendo do Arquivo ---");
        console.log(dadosLidos);
        
    } catch (erro) {
        console.error("Erro ao manipular o arquivo:", erro);
    }
};
 
gerenciarDiario();

🕹️ Como Executar e Testar no VS Code

  1. Abra o terminal integrado.
  2. Execute: node diario_sobrevivente.js
  3. Um arquivo diario.txt será criado na pasta!

Resultado Esperado:

Diario salvo com sucesso!
 
--- Lendo do Arquivo ---
Registro de Sobrevivente
Nome: Joel
Status: Saudavel

📊 Ilustração Visual: Fluxo de Arquivos

Veja como o Node.js lê e escreve:

graph LR
    A[💻 Código JS] -->|writeFile| B[💾 arquivo.txt]
    B -->|readFile| A

🛠️ Prática Obrigatória 1: Anexando Notas

Pesquise sobre o método fs.appendFile (ou use writeFile lendo o conteúdo antigo primeiro) para adicionar a linha “Nota: Cuidado com os estaladores!” no arquivo diario.txt.


🔑 Gabarito de Código

Prática 1: anexar_nota.js

const fs = require('fs').promises;
 
const anexar = async () => {
    try {
        // O appendFile adiciona no final sem apagar o que já existia
        await fs.appendFile('diario.txt', "\nNota: Cuidado com os estaladores!");
        console.log("Nota adicionada!");
        
        const conteudo = await fs.readFile('diario.txt', 'utf-8');
        console.log(conteudo);
    } catch (erro) {
        console.error(erro);
    }
};
 
anexar();

📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

(Siga o padrão estabelecido no Guia)


Capitulo Anterior | Proximo Capitulo