2013-10-08 3 views
1

У меня есть абсолютный путь к папке. Есть ли способ узнать количество подпапок, которые он содержит, и получить имена всех его подпапок, используя JavaScript (nodejs). Я googled, но не нашел никакого решения.Как узнать имя всех подпапок

+0

Для этого вам понадобится серверный язык, например php. но вы можете использовать ajax для вызова php-скрипта, который возвращает список, а затем обрабатывает его с помощью JavaScript. – rorypicko

+0

Я пытаюсь с помощью Nodejs. Можно ли использовать Nodejs – pnkz

+0

Хорошо, я не уверен, в будущем, пожалуйста, укажите технологии, которые вы используете. – rorypicko

ответ

1

Вы хотите the fs module.

var fs = require('fs'); 
var path = '/Users/quentin'; 
var filenames = fs.readdirSync(path); 
var count = 0; 
filenames.forEach(function (name) { 
    if (name === "." || name === "..") { 
     return; 
    } 
    if (fs.lstatSync(path + "/" + name).isDirectory()) { 
     count++; 
    } 

}); 
console.log(count); 
0

Вы можете использовать что-то вроде этого:

var fs = require('fs'); 
var path = require('path'); 

var uid = process.getuid(); 
var gid = process.getgid(); 

function countDirs(dir, depth) { 
    if (! depth) return 0; 
    depth--; 

    var dirs = fs.readdirSync(dir); 
    var result = 0; 
    var item, stat; 
    while(dirs.length) { 
     item = path.join(dir, dirs.shift()); 
     stat = fs.lstatSync(item); 

     if (! stat.isDirectory()) continue; 
     var mode = stat.mode.toString(8).split(); 
     result++; 
     // If process allowed to read dir 
     if (stat.uid === uid || stat.guid === gid && mode[3] > 3 || mode[4] > 3) { 
      result += countDirs(item, depth); 
     } 
    } 
    return result; 
} 
// Example usage 
var count = countDirs(process.cwd(), 1); 
console.log('Total dirs count:', count); 

Примечание! Не забывайте о разрешениях!

Смежные вопросы