• 一个简单的Node命令行程序:文件浏览


    首先是目录:

    然后是配置文件package.json:

    {
      "name" : "fs-explorer",
      "version" : "0.0.1",
      "description" : "a command-file file explorer"
    }

    然后是index.js:

    /*
    *模块依赖
    */
    var fs = require('fs');
    var  stdin = process.stdin;//输入流
    var  stdout = process.stdout;//输出流
    //读取当前目录
    fs.readdir(__dirname,function(err,files){
      if(err){
        console.log(err);
      }
      console.log('');
      if(!files.length){
        return console.log("这个文件夹是空的");
      }
      console.log('选择你想要查看的文件');
      var stats = [];//这个数组是存放当前目录列表
    
      function file(i){
        var filename = files[i];
        //查看当前目录是否存在
        fs.stat(__dirname + '/' + filename,function(err,stat){
          stats[i] = stat;//把当前目录放进去
          if(stat.isDirectory()){//判断是不是一个文件夹,如果是的话就在后面加上 /
            console.log('      ' + i + '    33[36m' + filename + '/33[39m');
          }else{
            console.log('      ' + i + '    33[90m' + filename + '33[39m');
          }
          i++;//自增
          if(i == files.length){//如果是当前目录的最后一个文件
            read();//开始监听
    
          }else{//不是的话就继续遍历
            file(i)
          }
        });
      }
      file(0);//从0开始遍历
    
      function read(){
        console.log('');
        stdout.write('      33[33m输入你的选择:33[39m');//输出
        stdin.resume();//等待用户输入
        stdin.setEncoding('utf8');//设置编码
        stdin.on('data',option);//监听事件
      }
    
      function option(data){
        var filename = files[Number(data)];
    
        if(!files[Number(data)]){
          stdout.write("输入您的选择哦")
        } else {
          stdin.pause();//暂停流
          if(stats[Number(data)].isDirectory()){
              fs.readdir(__dirname + '/' + filename ,function(err,files){
                console.log('');
                console.log("("+ filename.length +" files)");
                files.forEach(function(file){
                  console.log('-' + file);
                });
                console.log('');
              })
            } else {
              //读取选择的文件
              fs.readFile(__dirname + '/' + filename,'utf8',function(err,data){
                console.log('');
                console.log('330[90m' + data.replace(/(.*)/g,' $1') + '33[39m');
              })
            }
    
        }
    
      }
    });

    敲下:

     这很美滋滋。

  • 相关阅读:
    七easy网络陷阱上当
    移动端--web开展
    ContentType是否大小写区分?
    NYOJ 24 素数的距离问题
    Emoji:搜索将与您找到表情符号背后的故事
    Cocos2d-X之LUA注意事项
    [Angular] ChangeDetection -- onPush
    [Node.js] Build microservices in Node.js with micro
    [Angular] Scrolling the Message List To the Bottom Automatically Using OnChanges
    [Angular] Ngrx/effects, Action trigger another action
  • 原文地址:https://www.cnblogs.com/jjucap/p/7794516.html
Copyright © 2020-2023  润新知