Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Работа с файловой системой (https://javascript.ru/forum/misc/39491-rabota-s-fajjlovojj-sistemojj.html)

Romaboy 02.07.2013 12:12

Работа с файловой системой
 
Я делаю плеер на node-webkit, подскажите как через javascript, jquery или в крайнем случае через node.js можно производить поиск файлов mp3 по файловой системе или внутри определённой папки и возможно ли это вообще?

Romaboy 02.07.2013 12:56

Вот почти то, что и хотелось. Немного неясно как заставить это искать mp3, но я справлюсь.

danik.js 02.07.2013 13:03

Цитата:

Сообщение от Romaboy
Я делаю плеер на node-webkit, подскажите как через javascript, jquery или в крайнем случае через node.js можно производить поиск файлов mp3 по файловой системе или внутри определённой папки и возможно ли это вообще?

Я делаю деревянный стол. Подскажите как через древесину, набор досок или в крайнем случае через деревообрабатывающий станок сделать ножку для стола?

Romaboy 02.07.2013 13:44

Разве что-то неверно сказал? Вопрос был про поиск файлов на компе, довольно четко сформулирован. Я немного отредактировал скрипт со стакаоверфлёуа и теперь он исчет мп3 файлы в указанной папке:
var mp3find = /\.mp3$/;
  var fs = require('fs');
  var walk = function(dir, done) {
    var results = [];
    fs.readdir(dir, function(err, list) {
      if (err) return done(err);
      var pending = list.length;
      if (!pending) return done(null, results);
      list.forEach(function(file) {
        file = dir + '/' + file;
        fs.stat(file, function(err, stat) {
          if (stat && stat.isDirectory()) {
            walk(file, function(err, res) {
              results = results.concat(res);
              if (!--pending) done(null, results);
            });
          } else {
            if(mp3find.test(file)){results.push(file)}
            if (!--pending) done(null, results);
          }
        });
      });
    });
  };
  walk('D:\\node-webkit', function(err, results) {
  if (err) throw err;
  console.log(results);
  });

Не знаю пока, как обнаруживать разделы диска программно, но скоро узнаю. Совсем не откажусь от наводочки на то, как же все таки получить массив вроде ['C://','D://']

Romaboy 02.07.2013 15:05

Вот этот милый код кладёт названия дисков в массив:
var partfind = /[A-Z]:\s/;
  var partitions = [];

  var spawn = require('child_process').spawn,
    list  = spawn('cmd');

list.stdout.on('data', function (data) {
  console.log(''+data);
  if(partfind.test(data)){partitions.push((''+data)[0])}
});

list.stderr.on('data', function (data) {
  console.log('stderr: ' + data);
});

list.on('exit', function (code) {
  console.log(partitions);
  alert(partitions)
});

list.stdin.write('wmic logicaldisk get name\n');
list.stdin.end();

Только там кроме нужных ещё дисковод, дискетовод и дэймонтулз, но это не страшно.

danik.js 02.07.2013 21:48

Цитата:

Сообщение от Romaboy
Разве что-то неверно сказал?

А я разве что-то неверно спросил?


Часовой пояс GMT +3, время: 12:43.