Trabalho com pastas em Node.js
O módulo nativo fs
do Node.js fornece diversos métodos versáteis para trabalhar com pastas.
Valide se uma pasta existe
Utilize fs.access()
para validar se a pasta existe e o Node.js pode acessá-la com suas permissões.
Crie uma nova pasta
Utilize fs.mkdir()
ou fs.mkdirSync()
para criar uma nova pasta.
const fs = require('fs')const folderName = '/Users/pauloluan/test'try {if (!fs.existsSync(folderName)) {fs.mkdirSync(folderName)}} catch (err) {console.error(err)}
Leia o conteúdo de um diretório
Utilize fs.readdir()
ou fs.readdirSync()
para ler os conteúdos de um diretório.
Esse trecho de código lê o conteúdo de uma pasta, ambos arquivos e subpastas, e retorna o caminho relativo deles:
const fs = require('fs')const path = require('path')const folderPath = '/Users/pauloluan'fs.readdirSync(folderPath)
Você pode obter o caminho inteiro:
fs.readdirSync(folderPath).map(fileName => {return path.join(folderPath, fileName)})
Você também pode filtrar os resultados para retornar apenas os arquivos, excluindo as pastas:
const isFile = fileName => {return fs.lstatSync(fileName).isFile()}fs.readdirSync(folderPath).map(fileName => {return path.join(folderPath, fileName)}).filter(isFile)
Renomeie uma pasta
Utilize fs.rename()
ou fs.renameSync()
para renomear uma pasta. O primeiro parâmetro é o caminho atual, o segundo o novo caminho:
const fs = require('fs')fs.rename('/Users/pauloluan', '/Users/roger', err => {if (err) {console.error(err)return}// feito})
fs.renameSync()
é a versão síncrona:
const fs = require('fs')try {fs.renameSync('/Users/pauloluan', '/Users/roger')} catch (err) {console.error(err)}
Delete uma pasta
Utilize fs.rmdir()
ou fs.rmdirSync()
para deletar uma pasta.
Deletar uma pasta que tem conteúdo pode ser mais complicado do que o esperado.
Nesse caso é melhor instalar o módulo fs-extra
, que é bem popular e atualizado. É uma substituição do módulo fs
, que possui mais funcionalidades.
Nesse caso o método que você quer é o remove()
.
Instale usando
npm install fs-extra
e use-o assim:
const fs = require('fs-extra')const folder = '/Users/pauloluan'fs.remove(folder, err => {console.error(err)})
Também pode ser utilizado com promises:
fs.remove(folder).then(() => {//done}).catch(err => {console.error(err)})
ou com async/await:
async function removeFolder(folder) {try {await fs.remove(folder)//done} catch (err) {console.error(err)}}const folder = '/Users/pauloluan'removeFolder(folder)