Trabalhando com pastas no Node.js
O módulo central 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 promessa fsPromises.access()
) para verificar se a pasta existe e se o Node.js pode acessá-la com suas permissões.
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.
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 trecho de código lê o conteúdo de uma pasta, tanto arquivos quanto subpastas, e retorna seu caminho relativo:
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:
fs.readdirSync(folderPath)
.map(fileName => path.join(folderPath, fileName));
Você também pode filtrar os resultados para retornar apenas os arquivos, excluindo as pastas:
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 a pasta. O primeiro parâmetro é o caminho atual, o segundo o novo caminho:
const fs = require('node:fs');
fs.rename('/Users/joe', '/Users/roger', err => {
if (err) {
console.error(err);
}
});
fs.renameSync()
é a versão síncrona:
const fs = require('node:fs');
try {
fs.renameSync('/Users/joe', '/Users/roger');
} catch (err) {
console.error(err);
}
fsPromises.rename()
é a versão baseada em promessa:
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.
const fs = require('node:fs');
fs.rmdir(dir, err => {
if (err) {
throw err;
}
console.log(`${dir} foi apagado!`);
});
Para remover uma pasta que contém conteúdo, use fs.rm()
com a opção { recursive: true }
para remover o conteúdo recursivamente.
{ recursive: true, force: true }
faz com que as exceções sejam ignoradas se a pasta não existir.
const fs = require('node:fs');
fs.rm(dir, { recursive: true, force: true }, err => {
if (err) {
throw err;
}
console.log(`${dir} foi apagado!`);
});