首先是目录:
然后是配置文件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'); }) } } } });
敲下:
这很美滋滋。