首页 > 语言 > JavaScript > 正文

详解nodejs 文本操作模块-fs模块(二)

2024-05-06 15:04:25
字体:
来源:转载
供稿:网友

前一篇学习了文件的打开和关闭,文件操作总不能只包含打开和关闭吧,这里就开始文件的读写操作。

fs模块方法

1:read和readSync方法

该方法,是从文件的指定位置处读取文件,一直读取到文件底部,然后江都区到的内容输出到一个缓存区,使用方法如下:

fs.read(fd,buffer,offset,length,position,callback); 

在read方法中,支持6个参数:

fd参数,是文件描述符,是open方法的回调函数中获取到的,是一个数字。 buffer,是一个buffer对象,用于指定将文件数据读取到那个缓存区,如果不定义,则会生成一个新的缓存区,进行存放新读取到的数据。 offset,是一个整数值,用于指定向缓存区中写入数据时的开始位置,以字节为单位。其实也就是,读入到缓存中的数据,从buffer对象的第几个元素开始写入。 length,是一个整数值,表示读入的数据,多少数据写入到buffer对象中去,要保证不能超出buffer的容纳范围,否则会抛出一个范围异常。 position,是一个整数值,表示,从文件中的哪个位置,开始读取数据,如果设置为非0的整数,则从该整数所示的位置,读取长度为length的数据到buffer对象中。 callback,回调函数,当读取文件成功之后,把执行该函数,该回调函数支持三个参数:
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>   //它们俩是完全相同的。其实质是,它们俩占据的内存也是相同的,   //它们就是同一个缓存区。  }); });             
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选