Node.js文件模块fs读取文件的两种方式及比较:read和readFile
1. fs.read()读取文件数据
语法格式:
fs.read(fd, buffer, offset, length, position, callback)
-
fd – 通过 fs.open() 方法返回的文件描述符。
-
buffer – 数据写入的缓冲区。
-
offset – 缓冲区写入的写入偏移量。
-
length – 要从文件中读取的字节数。
-
position – 文件读取的起始位置,如果 position 的值为 null,则会从当前文件指针的位置读取。
-
callback – 回调函数,有三个参数err, bytesRead, buffer,err 为错误信息, bytesRead 表示读取的字节数,buffer 为缓冲区对象。
var fs = require("fs");
var buf = new Buffer.alloc(1024);
console.log("准备打开已存在的文件!");
fs.open('input.txt', 'r+', function(err, fd) {
if (err) {
return console.error(err);
}
console.log("文件打开成功!");
console.log("准备读取文件:");
fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
if (err){
console.log(err);
}
console.log(bytes + " 字节被读取");
// 仅输出读取的字节
if(bytes > 0){
console.log(buf.slice(0, bytes).toString());
}
});
});
2. fs.readFile()读取文件内容
- filename表示要读取的文件
-
callback回调函数有2个参数 (err, data),参数 data 是文件的内容。如果没有指定参数encoding, 则返回值为Buffer。
fs.readFile('./txt/3.txt',function(err,data){ if(err){ console.log(err) } console.log("读取到的数据:"+data.toString()) })
3. fs.read()和fs.readFile()方法的比较
fs.readFile('/txt/01.js', function(err, data){
//文件内容
console.log(data.toString());
})
fs.stat('txt/01.js', function(err, stat) {
if(stat&&stat.isFile()){
fs.open('txt/01.js', 'r', function(err, fd){
//创建一个与文件大小相同的缓冲区
var readBuffer = new Buffer(stat.size);
var len = stat.size;
var offset = 0;
var filePostion = 0;
fs.read(fd, readBuffer, offset, len, filePostion, function(err, readByte, readResult){
//文件内容
console.log(readResult.toString());
});
});
}
})