fs(File System)- 文件操作


文件操作是IO的一种,涉及到node.js设计思想中非常重要的异步IO

安装引入

使用时需要引入:

1
const fs = require('fs');

同步与异步的区别

  • 同步:当代码执行时,下面的代码只能等待其执行完毕后才能执行,参数没有回调函数,有返回值,返回值与异步中的特殊参数一致
  • 异步:参数有回调函数,回调函数中有特殊参数,无返回值

一般回调函数的第一个参数是错误对象 err,如果 err 为 null,表示没有错误,否则报错
因此建议回调函数内部使用

1
if(err) return

常用操作

  • fs.xxx:异步操作
  • fs.xxxSync:同步操作

查看文件

异步操作

1
fs.stat(path[, options], callback)
  • path:访问文件的路径
  • options:可选参数,默认false
  • callback:回调函数,回调函数参数:特殊对象stats

同步操作

1
fs.statSync(path[, options])

返回值与异步中的stats对象性质一样

stats常用属性

其他属性参考API

属性名 属性含义
atime 文件访问时间
mtime 文件数据发生变化的时间
ctime 文件的状态信息发生变化的时间(比如文件权限)
birthtime 文件创建时间

stats常用方法

其他方法参考API

方法名 方法含义
stats.isFile() 是否为文件
stats.isDirectory() 是否为目录

读取文件

会把所有的文件内容全部加载到内存,只适合内容量比较少的文件

异步操作

1
fs.readFile(path[, options], callback)
  • path:文件的全路径
  • options:可选参数,编码encording 和 标记flag(指定文件是读还是写,默认r)
  • callback:回调函数,回调函数参数:读取到的文件的内容 data
    如果options存在并且为编码,那么回调函数获取的数据就是字符串,否则为Buffer实例对象
    获取文本内容示例
1
2
fs.readFile(path,(err,data) => console.log(data.toString()))
fs.readFile(path,'utf8',(err,data) => console.log(data))

同步操作

1
fs.readFileSync(path[, options])

参数一样,返回值与异步中的data性质一样

写入文件

尽量只调用一次,会把所有的文件内容全部加载到内存,只适合内容量比较少的文件

异步操作

1
fs.writeFile(file, data[, options], callback)
  • file:文件的全路径
  • data:写入的数据
  • options:可选参数:编码encording(默认utf8)、控制文件权限mode(默认 0o666)和 标记flag(指定文件是读还是写,默认w)
  • callback:回调函数(仅有参数err)
    获取文本内容示例
1
fs.writeFile(path,(err) => {})

同步操作

1
fs.writeFileSync(path[, options])

参数一样,无返回值

重命名文件

异步操作

1
fs.rename(oldPath, newPath, [callback(err)])
  • oldPath:原路径
  • newPath:新路径
  • callback:可选参数,回调函数(仅有参数err)

同步操作

1
fs.renameSync(oldPath, newPath)

参数一样,无返回值