node读取文档行数Sync可以readFile不行

如果用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);

则会提示
图片描述

请问哪里错了呢?

阅读 5.8k
3 个回答

代码有两处错误,其一是应该 data.toString().split('\n'),你对比下上面的,顺序错了,因为 data 是个 buffer,要先转为 string 才能 split;其二是 console.log(arr) 的位置错了,因为方法异步,所以应该写在回调里。

var arr ;
var num = fs.readFile('test.txt', function(ree, data) {
    arr = data.toString().split('\n');
    console.log(arr.length);
});

typeof看看data是什么

arr = ("" + data).split('n').toString();

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题