前一篇学习了文件的打开和关闭,文件操作总不能只包含打开和关闭吧,这里就开始文件的读写操作。
fs模块方法
1:read和readSync方法
该方法,是从文件的指定位置处读取文件,一直读取到文件底部,然后江都区到的内容输出到一个缓存区,使用方法如下:
fs.read(fd,buffer,offset,length,position,callback);
在read方法中,支持6个参数:
function (err,bytesRead,buffer){ //err为读取文件操作失败时,触发的错误对象 //bytesRead为读取到的字节数,如果文件的比较大,则该值就是length的值, //如果文件的大小比length小,则该值为实际中读取到的字节数。 //buffer为读取到的内容,保存到了该缓存区,如果在使用read时, //传入了buffer对象,则此处的buffer就是传入的buffer对象。 //如果在read时没有传入buffer,则此处的buffer为新创建的buffer对象 }
上面把参数的含义以及回调函数的定义,都说明了一下,这里就看一个示例吧:
var fs = require("fs"); fs.open("fs.txt","r",function(err,fd){ //读取fs.text,文件的内容为“123456789”,长度为9 var buffer = new Buffer([0,0,0,0,0,0,0,0,0,0]); //创建一个长度为10,初始值为0的buffer对象。 //数据比较少,就直接写了,否则还是使用fill方法吧。 console.log(buffer); //<Buffer 00 00 00 00 00 00 00 00 00 00> //初始时的buffer对象 fs.read(fd,buffer,4,6,4,function(err,bytesRead,buffer1){ //读取到的数据,从buffer对象的第5个元素开始保存,保存6个字节的元素 //读取文件,是从文件的第5个字节开始,因为文件中内容长度为9, //那么,读取到的内容就是56789,所以buffer的最后一位仍然为初始值。 //由于想要读取的字节长度为6,但是文件内容过短,只读取了5个字节的有效数据 //就到了文件的结尾了,所以,bytesRead的值不是6,而是5。 //而buffer对象,为被写入新数据之后的对象。 console.log(bytesRead); //5 console.log(buffer1); //<Buffer 00 00 00 00 35 36 37 38 39 00> console.log(buffer); //<Buffer 00 00 00 00 35 36 37 38 39 00> //它们俩是完全相同的。其实质是,它们俩占据的内存也是相同的, //它们就是同一个缓存区。 }); });
新闻热点
疑难解答
图片精选