版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/S_clifftop/article/details/80655569
先说一下文件读取的方法,然后再说一下
readFile()
和readFileSync()
方法的区别
文件的读取方法
//需要先导入内置模块
var fs = require('fs');
module.exports = {
//第一种,使用第二、三种就可以了
readFile: function (path) {
var buf = new Buffer(1024);
fs.open(path, 'r+' /*以读写的方式打开文件*/, function (err, fd /*文件描述符*/) {
if (err) {
console.log(err);
} else {
//异步读取,同样的,它也有个对应的同步读取fs.readSync()
fs.read(fd, buf, 0, buf.length, 0, function (err, bytes) {
if (err) {
console.log(err);
} else {
if (bytes > 0) {
console.log(buf.slice(0, bytes).toString());
}
}
});
}
fs.close(fd, function (err) { //异步的方式进行关闭文件
if (err) {
console.log(err);
}
});
});
},
//第二种
readFileSync: function (path) {
var data = fs.readFileSync(path, 'utf-8');
return data;
},
//第三种
readFileAsync: function (path) {
fs.readFile(path, function (err, data) {
if (err) {
console.log(err);
} else {
console.log(data.toString());
}
});
}
};
两种方法的区别
1、fs.readFile(file)
是异步的
- 不会阻塞后面代码的执行,性能相对下面好,如果需要用到文件中内容,需要写个回调函数
2、fs.readFileSync(file)
是同步的
- 会阻塞后面代码的执行
不管怎样,两个方法最后都是调用c++同一个读取文件的方法,只不过自定义的方法里面调用的是
fstat()
或fstatSync()
,看情况使用,一般用异步的