2017-01-04 16 views
5

İşlevimle ilgili küçük bir sorunum var. Tüm dosyaları birçok dizinde almak istiyorum. Şu anda, dosyalar içinde geçirilen dosyaları parametre olarak alabilirim. Her klasörün html dosyalarını parametre olarak geçirilen klasöre almak istiyorum. "Test" parametresine koydum, "test" deki dosyaları alıp alamayacağımı açıklayacağım ama "test/1/*. Html", "test/2/./ .html":Tüm dosyaları tekrarlı olarak dizinlerde ara. NodejS

var srcpath2 = path.join('.', 'diapo', result); 
function getDirectories(srcpath2) { 
       return fs.readdirSync(srcpath2).filter(function (file) { 
        return fs.statSync(path.join(srcpath2, file)).isDirectory(); 
       }); 
      } 

sonucu: [1,2,3]

teşekkürler!

cevap

12

glob npm package size yardımcı olur.

Dosya hiyerarşisi:

test 
├── one.html 
└── test-nested 
    └── two.html 

JS kodu:

var getDirectories = function (src, callback) { 
    glob(src + '/**/*', callback); 
}; 
getDirectories('test', function (err, res) { 
    if (err) { 
    console.log('Error', err); 
    } else { 
    console.log(res); 
    } 
}); 

görüntüler: Ayrıca kendi yazabilirsiniz

[ 'test/one.html', 
    'test/test-nested', 
    'test/test-nested/two.html' ] 
+0

süper! mükemmel ! teşekkür ederim ! :) nom glob çok iyi –

0

İşte nasıl kullanılacağını örneğidir dizini aşağıdaki gibi çaprazlamak için aşağıdakine benzer kod:

var fs = require('fs'); 
function traverseDirectory(dirname, callback) { 
    var directory = []; 
    fs.readdir(dirname, function(err, list) { 
    dirname = fs.realpathSync(dirname); 
    if (err) { 
     return callback(err); 
    } 
    var listlength = list.length; 
    list.forEach(function(file) { 
     file = dirname + '\\' + file; 
     fs.stat(file, function(err, stat) { 
     directory.push(file); 
if (stat && stat.isDirectory()) { 
      traverseDirectory(file, function(err, parsed) { 
    directory = directory.concat(parsed); 
    if (!--listlength) { 
     callback(null, directory); 
    } 
    }); 
} else { 
    if (!--listlength) { 
     callback(null, directory); 
    } 
      } 
     }); 
    }); 
    }); 
} 
traverseDirectory(__dirname, function(err, result) { 
    if (err) { 
    console.log(err); 
    } 
    console.log(result); 
}); 
Burada bu konuda daha fazla bilgi kontrol edebilirsiniz

: typescript kullanarak, belirli bir taban klasördeki tüm alt klasörleri almak ve bu geldi: http://www.codingdefined.com/2014/09/how-to-navigate-through-directories-in.html

+0

teşekkürler! ama sonuç nasıl res.send gönderilir? lütfen –

+0

@ coco62 Fonksiyonun içindeki sonucu aldığınızda, onu oturum açmak yerine iletebilirsiniz. – CodingDefined

+0

Teşekkürler adamım! bu iyi –

2

Bir Elektron app benzer yüzden bir şey, ihtiyaç

0

İşte benim. Tüm iyi cevaplar gibi, anlaşılması zor:

İlgili konular