Node之文件的完整读写

文件的完整读写

文件的读写需要引入node核心模块fs

let fs=require('fs')

readFile(filename, [options], callback)异步读取文件

fs.readFile(filename, [options], callback)

在readFile方法中,使用三个参数,其中filename参数与callback参数为必须指定的参数,options参数为可选参数。filename参数用于指定读取文件的完整文件路径及文件名,options参数值为一个对象,在其中指定读取文件时需要使用的选项,在该参数值对象中可以使用flag属性指定对该文件采取什么操作,默认值为’r’(如果指定读取的文件不存在,则抛出异常)

options配置文件中flag(权限)可选值如下

  • ‘r’:读取文件,如果文件不存在则抛出异常。
  • ‘r+’:读取并写入文件,如果文件不存在则抛出异常。
  • ‘rs’:以同步方式读取文件并通知操作系统忽略本地文件系统缓存,如果文件不存在则抛出异常。由于该属性值的使用将使操作系统忽略本地文件系统缓存机制,因此在操作网络文件系统时建议使用该属性值,但由于其对性能产生一定的负面影响,所以在其他场合下不建议使用。
  • ‘w’:写入文件。如果文件不存在则创建该文件,如果该文件已存在则清空文件内容。
  • ‘wx’:作用与’w’类似,但是以排他方式写入文件。
  • ‘w+’:读取并写入文件。如果文件不存在则创建该文件,如果该文件已存在则清空文件内容。
  • ‘wx+’:作用与’w+'类似,但是以排他方式打开文件。
  • ‘a’:追加写入文件,如果文件不存在则创建该文件。
  • ‘ax’:作用与’a’类似,但是以排他方式写入文件。
  • ‘a+’:读取并追加写入文件,如果文件不存在则创建该文件。
  • ‘ax+’:作用与’a+'类似,但是以排他方式打开文件。

在options参数值中,可使用encoding属性指定使用何种编码格式来读取该文件,可指定属性值为“utf8”、“ascii”与“base64”。callback参数用于文件读取完毕时执行的回调函数。

function (err, data) {
//
回调函数代码略
}

Node中采用错误优先的方式

在回调函数中使用两个参数,其中第一个参数值为读取文件操作失败时触发的错误对象,第二个参数值为读取到的文件内容。当在options参数值对象中使用encoding属性指定编码格式时,该参数值为将文件内容根据指定编码格式经过编码后的字符串,当不指定options参数或在options参数值对象中不使用encoding属性时,该参数值为一个存放了文件中原始二进制内容的缓存区对象、

使用同步方式读取文件readFileSync(fileName,[option]);

var data=fs.readFileSync(filename, [options])

使用异步方式写入文件writeFile(filename,data,[options],callback);

  • filename:文件名
  • data:需要写入的数据
  • option:options参数值为一个对象,参数如下
    • flag属性:用于指定对该文件采取何种操作,默认值为’w’(文件不存在时创建该文件,文件已存在时重写该文件),可指定值及其含义与readFile方法中使用的options参数值中的flag属性的可指定值及其含义相同。
    • mode属性:用于指定当文件被打开时对该文件的读写权限,默认值为0666(可读写)。该属性值及fs模块中的各方法中的mode参数值的指定方法均如下所示:使用4个数字组成mode属性值或?mode参数值,其中第一个数字必须是0,第二个
      数字用于规定文件或目录所有者的权限,第三个数字用于规定文件或目录所有者所属用户组的权限,第四个数字规定其他人的权限。可以设定的数字如下所示:
      • 1:执行权限
      • 2:写权限
      • 4:读权限
    • encoding属性:用于指定使用何种编码格式来写入该文件。可指定属性值为“utf8”、“ascii”与“base64”。当data参数值为一个Buffer对象时该属性值被忽略,使用默认编码格式utf8来执行文件的写入。
  • callback:回调函数
fs.writeFile(filename,data,[options],callback)

使用同步方式写入文件writeFileSync(filename,data,[options])

fs.writeFileSync(filename,data,[options]

使用异步方法追加内容到文件底部appendFile(filename,data,[options],callback)

fs.appendFile(filename,data,[options],callback)

使用同步方法追加内容到文件底部appendFileSync(filename,data,[options],callback)

fs.appendFileSync(filename,data,[options])

从指定位置处开始读写文件

如何实现从指定位置处开始读写文件的处理。要实现这一处理,我们首先需要使用fs模块中的open方法或openSync方法打开文件。

异步打开文件open(filename, flags,[mode],callback)

fs.open(filename, flags,[mode],callback)

callback参数用于指定文件打开操作执行完毕时执行的回调函数

function (err, fd) {
//
回调函数代码略
}

回调函数使用两个参数,其中第一个参数值为打开文件操作失败时所触发的错误对象,第二个参数值为一个整数值,代表打开文件时返回的文件描述符(在Windows操作系统中,文件描述符亦称文件句柄)。

同步打开文件openSync(filename, flags,[mode])

var fd=fs.openSync(filename, flags,[mode])

从文件的指定位置处读取文件read(fd, buffer, offset, length, position, callback)

fs.read(fd, buffer, offset, length, position, callback)
  • fd:必须为open方法所使用的回调函数中返回的文件描述符或openSync方法返回的文件描述符;
  • buffer:buffer参数值为一个Buffer对象,用于指定将文件数据读取到哪个缓存区中;
  • offset:用于指定向缓存区中写入数据时的开始写入位置(以字节为单位)
  • length:用于指定从文件中读取的字节数
  • position:用于指定读取文件时的开始位置(以字节为单位)
  • callback:该回调函数使用三个参数,其中err参数值为读取文件操作失败时所触发的错误对象;bytesRead参数值为一个整数值,代表实际读取的字节数(由于文件的开始读取位置+指定读取的字节数可能大于文件长度,指定读取的字节数可能并不等于实际读取到的字节数);buffer参数值为被读取的缓存区对象。

从文件的指定位置处同步读取文件readSync(fd, buffer, offset, length, position)

参数与异步读取一致

从文件的指定处开始写入这些数据write(fd, buffer, offset, length, position, callback)

fs.write(fd, buffer, offset, length, position, callback)

callback函数使用三个参数,其中err参数值为写入文件操作失败时所触发的错误对象;written参数值为一个整数值,代表被写入的字节数;buffer参数值为一个Buffer对象,代表被读取的缓存区对象。

从文件的指定处开始写入这些数据writeSync(fd, buffer, offset, length, position )

参数与异步读取一致

关闭文件close(fd,[callback])

fs.close(fd,[callback])

同步关闭文件closeSync(fd)

fs.closeSync(fd)

将内存缓冲区中的剩余数据全部写入文件fsync(fd,[callback])

fs.fsync(fd,[callback])

将内存缓冲区中的剩余数据同步全部写入文件fsync(fd,[callback])

fs.fsyncSync(fd)
发布了139 篇原创文章 · 获赞 46 · 访问量 80万+

猜你喜欢

转载自blog.csdn.net/m0_37938910/article/details/103736423