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

时间:2022-04-07 15:37:02

首先是目录:

一个简单的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 + ' \033[36m' + filename + '/\033[39m');
}
else{
console.log(
' ' + i + ' \033[90m' + filename + '\033[39m');
}
i
++;//自增
if(i == files.length){//如果是当前目录的最后一个文件
read();//开始监听

}
else{//不是的话就继续遍历
file(i)
}
});
}
file(
0);//从0开始遍历

function read(){
console.log(
'');
stdout.write(
' \033[33m输入你的选择:\033[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') + '\033[39m');
})
}

}

}
});

敲下:

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

 

 这很美滋滋。

相关文章