elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  nodejs | obtener lista de archivos y directorios
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: nodejs | obtener lista de archivos y directorios  (Leído 4,316 veces)
patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
nodejs | obtener lista de archivos y directorios
« en: 9 Diciembre 2017, 21:06 pm »

Buenas,
con este codigo intento obtener un array con el formato: [name: 'nombre', type: 'dir o file',...]
Código
  1. function getFilesInFolder(realPath, callback){
  2. fs.readdir(realPath, (err, files) => {
  3. if(err)return callback(0);
  4. if(!files.length)return callback([]);
  5. var r = [];
  6. for(var i =0;i<files.length;i++){
  7. var f = files[i];
  8. fs.stat(realPath + '/' + f, (err, stat) => {
  9. if(err)return r.push(0);
  10. var a = {name: f}; // Problema, la variable f cambia hasta el ultimo archivo
  11. if(stat.isFile())a.type = 'file';
  12. else if(stat.isDirectory())a.type = 'dir';
  13. r.push(a);
  14. if(r.length == files.length){
  15. r.filter((e) => {return e;})
  16. console.log('final R: ', r);
  17. callback(r);
  18. }
  19. });
  20. }
  21. });
  22. }

Tiene que ser asincrono. Entiendo el problema pero no se como solucionarlo.

Un saludo


En línea

patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: nodejs | obtener lista de archivos y directorios
« Respuesta #1 en: 9 Diciembre 2017, 21:22 pm »

Lo resolví:
Código
  1. var fs = require('fs');
  2. var path = require('path');
  3.  
  4. var dir = '../first';
  5. fs.readdir(dir, (err, files) => {
  6. var r = [];
  7. files.forEach((file) => {
  8. s(file);
  9. function s(file){
  10. fs.stat(dir + '/' + file, (err, stat) => {
  11. if(err){console.error(err);return;}
  12. if(stat.isDirectory())r.push({f:file, type: 'dir'});
  13. else if(stat.isFile())r.push({f:file, type: 'file'});
  14. else r.push(0);
  15. if(r.length == files.length){
  16. r.filter((m) => {return m;});
  17. console.log(r);
  18. }
  19. });
  20. }
  21. });
  22. });

Pero no creo que sea la mejor forma de hacerlo


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines