程序启动后,显示当前目录下的列表,按照组开始
// Module Dependecies
// 声明依赖开始, stdioAPI是全局process对象的一部分
// function async(err, files) {console.log(files);}
// require('fs').readdir('.', async);
// console.log(require('fs').readdirSync('.'));
// fs模块是唯一一个提供同步异步API的模块
var fs = require('fs');
//first part, list the file folder's files!
fs.readdir(process.cwd(), function (err, files){
console.log(''); //为了输入更友好,输出空行
//如果files数组为空,则输出提示
if(!files.length){
return console.log(' \033[31m No files to show!\033[39m\n');
}
console.log(' Select which file or directory you want to see\n');
//定义了一个数组中每个元素i都会执行的函数
//串行执行--一种异步流控制模式
function file(i) {
var filename = file[i];
//fs.stat给出文件或目录的元数据
fs.stat(__dirname + '/' + filename, function (err, stat) {
if(stat.isDirectoty()){
console.log(' ' + i + ' \033[36m' + 'filename' + '/\033[39m');
} else{
console.log(' ' + i + ' \033[90m' + 'filename' + '/\033[39m');
}
i++;
if(i == files.length) {
console.log('');
process.stdout.write(' \033[33m Enter your choice: \033[39m');
process.stdin.resume();
process.stdin.setEncoding('utf-8)');
} else{
file(i); //如果还有未处理的文件,则递归调用该函数进行处理,直至列出所有文件.
}
});
}
file (0);//从头开始执行该函数,由0开始
});