zoukankan      html  css  js  c++  java
  • 一个简单的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');
              })
            }
    
        }
    
      }
    });

    敲下:

     这很美滋滋。

  • 相关阅读:
    1436 孪生素数 2
    1702 素数判定 2
    第五章 Spring3.0 、Hibernate3.3与Struts2的整合 基于Annotation
    逻辑服务器和数据缓存服务器交互方式整理
    Solr学习(2) Solr4.2.0+IK Analyzer 2012
    hdu4288 Coder
    解决Robotium测试用例crash问题
    FineUI_动态绑定Grid
    Protection 5 ---- Priviliege Level Checking 2
    用户权限管理
  • 原文地址:https://www.cnblogs.com/jjucap/p/7794516.html
Copyright © 2011-2022 走看看