codecamp

(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);
});
(3)同步IO读写
(5)过滤器
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }