Skip to content

Instantly share code, notes, and snippets.

@nathabonfim59
Created July 21, 2017 01:37
Show Gist options
  • Save nathabonfim59/4a77ee2cd117cac81e3788872daa8a80 to your computer and use it in GitHub Desktop.
Save nathabonfim59/4a77ee2cd117cac81e3788872daa8a80 to your computer and use it in GitHub Desktop.
FullStackAcademy - aula 1 - exercício 5
const fs = require('fs')
const path = './'
/**
* Lê um diretório e retorna em array com os nomes de arquivos e pastas encontrados nele
* @param {string} path Diretório a ser analisado
*/
const readdirPromise = function(path) {
return new Promise((resolve, reject) =>
fs.readdir(path, (err, arquivos) => {
if (err) {
reject(err)
} else {
resolve(arquivos)
}
})
)}
/**
* Verifica se é um arquivo ou pasta
* @param {string} arquivo Local a ser listado
*/
const verificaArquivo = function(arquivo) {
return new Promise((resolve, reject) => {
fs.stat(arquivo, (err, stat) => {
if (err) {
reject(err)
} else {
resolve(stat.isFile())
}
})
})
}
async function listaAquivos(path) {
try {
const arquivos = await readdirPromise(path)
const arquivosOrganizados = {
arquivos: [],
pastas: []
}
// Exibe os itens de um array linha a linha
const exibeVetor = function(arr) {
arr.sort().forEach((indice) => console.log(indice))
}
// Verifica cada um dos itens do diretório testando se é arquivo ou não
for(let i = 0;i < arquivos.length;i++) {
verificaArquivo(path+'/'+arquivos[i])
.then(isFile => {
if (isFile) {
arquivosOrganizados.arquivos.push(arquivos[i])
} else {
arquivosOrganizados.pastas.push(arquivos[i])
}
// Caso seja a última iteração, exibe os arquivos e pastas
if (i === arquivos.length - 1) {
console.log('==========\nPastas:\n==========')
exibeVetor(arquivosOrganizados.pastas)
console.log('\n==========\nArquivos:\n==========')
exibeVetor(arquivosOrganizados.arquivos)
}
})
.catch(err => console.log(err))
}
} catch (error) {
console.log(error)
}
}
listaAquivos('.')
@tuliofaria
Copy link

Certinho, para esse exercício recomendo dar uma olhada nesse vídeo também: https://www.youtube.com/watch?v=nnsz91rhWuA

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment