了不起的nodejs--小例子-简单的用户输入选项查看文件内容

nodejs小实例,简单的用户输入选项查看文件内容

var fs=require('fs')

//同步还是异步 异步

// require('fs').readdir('.',async)
// function async (err,files)
// {
//     console.log(files)
// }

// fs.readdir(__dirname,function(err,files){    //readdir  获取文件列表
//     console.log(files)
// })

//流
// process.stdout.write('hello world!!!')    输出hello world!!!
// process.stdin.pipe(process.stdout);    输入一个值,然后输出输入的值
// process.cwd()    返回 Node.js 进程的当前工作目录。
// fs.stat    通过检查文件系统来测试给定的路径是否存在

//------------------------------------------------------------------------------------------------------------------------------

fs.readdir(process.cwd(),function(err,files){      //fs.readdir获取文件列表    process.cwd()返回当前进程的工作目录
    console.log(' ')
    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')
    function file(i){
        var filename=files[i]
        fs.stat(__dirname+'/'+filename,function(err,stat){      //检查文件系统测试给定的路径是否存在
            if(stat.isDirectory()){
                console.log('   '+i+'   \033[36m'+filename+'/\033[39m')
            }else{
                console.log('   '+i+'   \033[36m'+filename+'\033[39m')
            }
            i++
            if(i==files.length){
                console.log(' ')
                process.stdout.write('   \033[33mEnter your choice: \033[39m')
                process.stdin.resume()  //在“旧”流模式下,stdin流默认是暂停的,所以必须调用process.stdin.resume()来读取它。
            }else{
                file(i)
            }
        })
    }
    file(0)
// function read(){
    process.stdin.on('data',option)   //监听data事件
// }
function option(data){          //读取
    var filename=files[Number(data)]

    if(!filename){
        process.stdout.write('   \033[31meEnter your choice: \033[39m')
    }else{
        process.stdin.pause()
        fs.readFile(__dirname+'/'+filename,'utf8',function(err,data){
            console.log(' ')
            // console.log('\033[90m'+data.replace(/(.*)/g,'   $1')+'\033[39m')   添加正则表达式添加辅助缩进
            console.log(data)
        })
    }
}
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值