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 字节被读取6532 字节被读取651 字节被读取6*/
文档里的介绍,,,
从 fd 指定的文件中读取数据。buffer 是数据(从 fd 读取)要被写入的 buffer。offset 是 buffer 中开始写入的偏移量。length 是整数,指定要读取的字节数。position 参数指定从文件中开始读取的位置。 如果 position 为 null,则从当前文件位置读取数据,并更新文件位置。 如果 position 是整数,则文件位置会保持不变。
回调有三个参数 (err, bytesRead, buffer)。
如果文件没有被同时地修改,则当读取的字节数为零时,即到达文件的末尾。
如果调用此方法的 util.promisify() 版本,则返回 Promise(会传入具有 bytesRead 属性和 buffer如果调用此方法的 Object)。
