如果用readFileSync这样写
var fs = require('fs');
var num = fs.readFileSync(process.argv[2]).toString();
var arr = num.split('\n');
console.log(arr.length);
则可以成功读取文件行数
但是如果用readFile异步写
var fs = require('fs');
var arr ;
var num = fs.readFile(process.argv[2], function callback(ree, data) {
arr = data.split('\n').toString();
});
console.log(arr);
则会提示
请问哪里错了呢?
代码有两处错误,其一是应该
data.toString().split('\n')
,你对比下上面的,顺序错了,因为 data 是个 buffer,要先转为 string 才能 split;其二是console.log(arr)
的位置错了,因为方法异步,所以应该写在回调里。