fs.read需要配合fs.open(fs,r,function(err, fd) {})使用
fs.read(``fd, buffer, offset, length, position, callback``)
属性说明:
fd 要读取的文件描述符 需要
buffer读取到的内容,读取的内容大小,类型是buffer类型的使用new Buffer.alloc(数字获取的长度)可以很大超过内容大小也没事
offset偏移量,整数类型,加length不能大于读取长度不然会报错 有什么用没看出来
lenght读取的长度,整数类型,显示出来的内容多少,可以很大不过不能超过buffer读取长度
position 文件读取的位置,整数类型或null, 如果超过文件内容长度就不读,null会co从当前文件位置开始读(如果两个异步位置可能很乱,,最后出来的都是一个位置开始的。使用的时候再看现在,看不出来问题了)多个read使用的结果看代码
callback 回调函数 参数(err,读取的字节数) 内容都在buffer里
let fs=require("fs")
var buf = new Buffer.alloc(4);
fs.open('4.txt', 'r+', function(err, fd) {
if (err) {
return console.error(err);
}
console.log("文件打开成功!");
console.log("准备读取文件:");
fs.read(fd, buf,0,3,null, function(err, bytes){
if (err){
console.log(err);
}
console.log(bytes + " 字节被读取");
// 仅输出读取的字节
if(bytes > 0){
console.log(buf.slice(0, bytes).toString());
}
});
fs.read(fd, buf,0,2,null, function(err, bytes){
if (err){
console.log(err);
}
console.log(bytes + " 字节被读取");
// 仅输出读取的字节
if(bytes > 0){
console.log(buf.slice(0, bytes).toString());
}
});
fs.read(fd, buf,0,1,null, function(err, bytes){
if (err){
console.log(err);
}
console.log(bytes + " 字节被读取");
// 仅输出读取的字节
if(bytes > 0){
console.log(buf.slice(0, bytes).toString());
}
});
});
/*
文件打开成功!
准备读取文件:
3 字节被读取
653
2 字节被读取
65
1 字节被读取
6
*/
文档里的介绍,,,
从 fd
指定的文件中读取数据。buffer
是数据(从 fd 读取)要被写入的 buffer。offset
是 buffer 中开始写入的偏移量。length
是整数,指定要读取的字节数。position
参数指定从文件中开始读取的位置。 如果 position
为 null
,则从当前文件位置读取数据,并更新文件位置。 如果 position
是整数,则文件位置会保持不变。
回调有三个参数 (err, bytesRead, buffer)
。
如果文件没有被同时地修改,则当读取的字节数为零时,即到达文件的末尾。
如果调用此方法的 util.promisify()
版本,则返回 Promise
(会传入具有 bytesRead
属性和 buffer
如果调用此方法的 Object
)。