Skip to content

Trabalhando com pastas em Node.js

O módulo principal fs do Node.js fornece muitos métodos úteis que você pode usar para trabalhar com pastas.

Verificar se uma pasta existe

Use fs.access() (e sua contraparte baseada em promises fsPromises.access()) para verificar se a pasta existe e se o Node.js pode acessá-la com suas permissões.

javascript
const fs = require('node:fs');

try {
  await fs.promises.access('/Users/joe');
} catch (err) {
  throw err;
}

Criar uma nova pasta

Use fs.mkdir() ou fs.mkdirSync() ou fsPromises.mkdir() para criar uma nova pasta.

javascript
const fs = require('node:fs');
const folderName = '/Users/joe/test';

try {
  fs.mkdirSync(folderName);
} catch (err) {
  console.error(err);
}

Ler o conteúdo de um diretório

Use fs.readdir() ou fs.readdirSync() ou fsPromises.readdir() para ler o conteúdo de um diretório.

Este código lê o conteúdo de uma pasta, tanto arquivos quanto subpastas, e retorna seus caminhos relativos:

javascript
const fs = require('node:fs');
const folderPath = '/Users/joe';
fs.readdirSync(folderPath).map(fileName => {
  return path.join(folderPath, fileName);
});

Você pode obter o caminho completo:

javascript
fs.readdirSync(folderPath)
  .map(fileName => path.join(folderPath, fileName));

Você também pode filtrar os resultados para retornar apenas os arquivos, excluindo as pastas:

javascript
const fs = require('node:fs');
const isFile = fileName => !fileName.includes(path.sep);

fs.readdirSync(folderPath)
  .map(fileName => path.join(folderPath, fileName))
  .filter(isFile);

Renomear uma pasta

Use fs.rename() ou fs.renameSync() ou fsPromises.rename() para renomear uma pasta. O primeiro parâmetro é o caminho atual, o segundo o novo caminho:

javascript
const fs = require('node:fs');
fs.rename('/Users/joe', '/Users/roger', err => {
  if (err) {
    console.error(err);
  }
});

fs.renameSync() é a versão síncrona:

javascript
const fs = require('node:fs');
try {
  fs.renameSync('/Users/joe', '/Users/roger');
} catch (err) {
  console.error(err);
}

fsPromises.rename() é a versão baseada em promises:

javascript
const fs = require('node:fs/promises');
async function example() {
  try {
    await fs.rename('/Users/joe', '/Users/roger');
  } catch (err) {
    console.log(err);
  }
}
example();

Remover uma pasta

Use fs.rmdir() ou fs.rmdirSync() ou fsPromises.rmdir() para remover uma pasta.

javascript
const fs = require('node:fs');
fs.rmdir(dir, err => {
  if (err) {
    throw err;
  }
  console.log(`${dir} foi deletada!`);
});

Para remover uma pasta que contém conteúdo, use fs.rm() com a opção { recursive: true } para remover recursivamente o conteúdo.

{ recursive: true, force: true } faz com que as exceções sejam ignoradas se a pasta não existir.

javascript
const fs = require('node:fs');
fs.rm(dir, { recursive: true, force: true }, err => {
  if (err) {
    throw err;
  }
  console.log(`${dir} foi deletada!`);
});