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.
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 código lê o conteúdo de uma pasta, tanto arquivos quanto subpastas, e retorna seus caminhos relativos:
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 uma 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 promises:
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 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.
const fs = require('node:fs');
fs.rm(dir, { recursive: true, force: true }, err => {
if (err) {
throw err;
}
console.log(`${dir} foi deletada!`);
});