了不起的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)
        })
    }
}
})
  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论

打赏作者

chenyou123_

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值