美文网首页
《了不起的Nodejs》例子:显示文件夹下文件,监控输入

《了不起的Nodejs》例子:显示文件夹下文件,监控输入

作者: 拓跋123 | 来源:发表于2018-05-23 11:32 被阅读6次

显示文件夹下内容,并根据输入显示文件内容,如果是文件夹就显示文件夹下文件数量 以及文件名。

var fs = require('fs');
var stdout = process.stdout;
var stdin = process.stdin;
var stats = [];
fs.readdir(process.cwd(), function (err, files) {
    console.log('');
    if (!files.length) {
        return console.log('没有文件可以显示');
    }
    console.log('请选择你想查看的文件或目录');
    function file(i) {
        var filename = files[i];
        fs.stat(__dirname + '/' + filename, function (err, stat) {
            stats[i] = stat;
            if (stat.isDirectory()) {
                console.log('文件夹:' + i + '.' + filename);
            } else {
                console.log('文件名:' + i + '.' + filename);
            }
            
            if (++i == files.length) {
                read();
            } else {
                file(i);
            }
        });
    }
    function read(){
        console.log('');
        stdout.write('请输入你的选择:');
        stdin.resume();
        stdin.setEncoding('utf8');
        stdin.on('data',option);
    }
    //处理用户请求的方法
    function option(data){
        var filename = files[Number(data)];
        if(!filename){
            stdout.write('请输入你的选择:');
        }else{
            stdin.pause();
            if(stats[Number(data)].isDirectory()){
                fs.readdir(__dirname+'/'+filename,function(err,files){
                    console.log('');
                    console.log(files.length+" files");
                    files.forEach(function(file){
                        console.log('   -   '+file);
                    });
                    console.log('');
                });
            }else{
                fs.readFile(__dirname+'/'+filename,'utf8',function (err,data) {
                    console.log('');
                    console.log(data.replace(/(.*)/g,'   $1'));
                });
            }
        }
    }
    file(0);
});


相关文章

网友评论

      本文标题:《了不起的Nodejs》例子:显示文件夹下文件,监控输入

      本文链接:https://www.haomeiwen.com/subject/bnqrjftx.html