node文件模块

var fs=require("fs")
var http=require("http")
    ,stdin=process.stdin
    ,stdout=process.stdout;
fs.readdir(process.cwd(),function (err,filers) {
    console.log('');
    if(!filers.length){
        return console.log(' \033[31m 没找到对应文件\033[39m\n');
    }
    console.log(' 选择你想要查看的文件\n');
    var stats=[];
    function file(i) {
        var filename=filers[i];
        fs.stat(__dirname+'/'+filename,function (err,stat) {
            stats[i]=stat;
            if(stat.isDirectory()){
                console.log(' '+i+' \033[36m' +filename+ '/\033[39m')
            }else {
                console.log(' '+i+' \033[90m' +filename+ '\033[39m')
            }
            if(++i==filers.length){
                read();
            }else {
                file(i)
            }

        })
    };
    function read() {
        console.log("");
        stdout.write(' \033[33m 输入你的选择: \033[039m');
        stdin.resume();
        stdin.setEncoding('utf8');
        stdin.on('data',option);
    }
    function option(data) {
        var filename=filers[Number(data)]
        if(!filers[Number(data)]){
            stdout.write(' \033[33m 输入你的选择: \033[039m');
        }else {
            stdin.pause();
            if(stats[Number(data)].isDirectory()){
                fs.readdir(__dirname+'/'+filename,function (err,data) {
                    console.log('')
                    console.log(' ('+filers.length+'files)');
                    data.forEach(function (file) {
                        console.log(' -'+file);
                    })
                    console.log('');
                })
            }else {
                fs.readFile(__dirname+'/'+filename,'utf8',function (err,data) {
                    console.log('')
                    console.log('\033[90m'+data.replace(/(.*)/g,' $1')+'\033[39m');
                })
            }
        }
    }
    file(0)
})

 

posted @ 2018-12-17 14:11  ABC袁  阅读(116)  评论(0)    收藏  举报