m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

nodejsの学習する(ファイルリスト表示)

electronとかいうのがありまして…

http://electron.atom.io/

jsを使ってやるらしいけどファイル制御とかはnodejsの部分を使用するということになる

うん、javascriptjquery以外には勉強しかしていない
このままだとコピペエンジニアになってしまう…(´・_・`)

目的がちょっと弱いけど少し書いてみる

ファイルの一覧を出す

$ tree
.
├── app.js
├── app2.js
└── files
    ├── aaa
    │   ├── xxx
    │   ├── xxx.txt
    │   └── yyy.txt
    ├── aaa.txt
    └── bbb.txt

3 directories, 6 files
$

こんな感じのファイルがあるのでfilesの中を抽出する

app.js

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

// 検索するディレクトリ
var _dir = __dirname + '/files';

// 指定ディレクトリを検索して一覧を表示
fs.readdir(_dir, function(err, files){

    // filesの中身を繰り替えして出力
    files.forEach(function(file){
        var _type = "";
        if(fs.statSync(_dir + "/" + file).isFile()){
            _type = "file     :";
        }else{
            _type = "directory:";
        }
        console.log(_type + _dir + "/" + file);
    });

});
結果
$ node app.js
directory:/Volumes/Transcend/samples/nodejs_sample1/files/aaa
file     :/Volumes/Transcend/samples/nodejs_sample1/files/aaa.txt
file     :/Volumes/Transcend/samples/nodejs_sample1/files/bbb.txt
$

もう少し深く見てみる

app2.js

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

// 検索するディレクトリ
var _dir = __dirname + '/files';

var walk = function(path, fileCallback, errCallback){
    // 指定ディレクトリを検索して一覧を表示
    fs.readdir(path, function(err, files){

        if(err){
            errCallback(err);
            return;
        }

        // filesの中身を繰り替えして出力
        files.forEach(function(file){
            var _f = path + "/" + file;
            if(fs.statSync(_f).isDirectory()){
                fileCallback(_f);
                walk(_f, fileCallback);
            }else{
                fileCallback(_f);
            }
        });

    });
}

walk(_dir, function(path){
    console.log(path);
}, function(err) {
   console.log("err");
});

$ node app2.js
/Volumes/Transcend/samples/nodejs_sample1/files/aaa
/Volumes/Transcend/samples/nodejs_sample1/files/aaa.txt
/Volumes/Transcend/samples/nodejs_sample1/files/bbb.txt
/Volumes/Transcend/samples/nodejs_sample1/files/aaa/xxx
/Volumes/Transcend/samples/nodejs_sample1/files/aaa/xxx.txt
/Volumes/Transcend/samples/nodejs_sample1/files/aaa/yyy.txt
$


とりあえずこんな感じ

所感

これを他の機能と組み合わせてCSVファイルのマージやEXCELファイルの集計などに使えるかも
最近はExcelのエラーに悩まされていたからやってみる価値はあるかも