node.js基础教程(4):异步IO读写

要求

编写一个程序,执行一个异步的对文件系统的操作:读取一个文件,并且在终端(标准输出stdout)打印出这个文件中的内容的行数。类似于执行 cat file | wc -l 这个命令。 所要读取的文件的完整路径会在命令行第一个参数提供。


提示

解决这个问题将需要用到Node.js最鲜明的风格的方式:异步。

‘’’fs.readFile()’’’方法可以满足这个需求,这需要从传入的回调函数中去收集数据(这些数据会作为第二参数传递给回调函数),而不是使用方法的返回值。

记住,Node.js 回调函数都有像如下所示的特征:

function callback (err, data) { /* ... */ }

可以通过检查第一个参数的真假值来判断是否有错误发生。如果没有错误发生,第二个参数将获取到一个Buffer对象。和 readFileSync() 一样,可以传入 ‘utf8 ‘ 作为它的第二个参数,然后把回调函数作为第三个参数,这样,得到的将会是一个字符而不是 Buffer。

fs模块API文档


代码

var fs = require('fs');
fs.readFile(process.argv[2], function(err,data){
    if(err) throw err;
    console.log(data.toString().split('\n').length-1);
});

一部由众多技术专家推荐, 帮你成为具有全面能力和全局视野工程师的进阶利器—— 《了不起的JavaScript工程师》出版了! 点击下方链接即刻踏上进阶之路!


亚里士朱德 wechat
更多WEB技术分享请订阅微信公众号“WEB学习社”