# fs(file system)模块

# 0.基础

fs模块可以实现与硬盘的交互,例如文件的创建、删除、重命名、移动,还有文件内容的写入、读取,以及文件夹的相关操作

# 1.写入文件

# 1-1 writeFile异步写入

语法:

fs.writeFile(file,data[,options],callback)

参数说明:

  • file 文件名
  • data 待写入的数据
  • options 选项设置(可选)
  • callback 写入回调

# 1-2 writeFileSync同步写入

# 1-3 appendFile/appendFileSync追加写入

语法与writeFile完全相同

# 1-4 createWriteStream流式写入

语法:

fs.createWriteStream(path[,options])

参数说明:

  • path 文件路径
  • options 选项设置(可选)

程序打开一个文件是需要消耗资源的,流式写入可以减少打开关闭文件的次数

流式写入方式适用于大文件写入或者频繁写入的场景,writeFile适合于写入频率较低的场景

# 1-5 写入文件的场景

文件写入在计算机中是一个非常常见的操作,下面的场景都用到了文件写入

  • 下载文件
  • 安装软件
  • 保存程序日志,如Git
  • 编辑器保存文件
  • 视频录制

当需要持久化保持数据的时候,应该想到文件写入

# 2.文件读取

# 2-1 readFile异步读取

语法:

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

参数说明:

  • path 文件路径
  • options 选项设置(可选)
  • callback 回调函数

# 2-2 readFileSync同步读取

# 2-3 createReadStream流式读取

语法:

fs.createReadStream(path[,options])
// 绑定data事件
rs.on('data',chunk=>{
  console.log(chunk.length);
})
// end 可选事件
rs.on('end',()=>{
  console.log('读取完成');
})

参数说明:

  • path 文件路径
  • options 选项设置(可选)

# 2-4 读取文件应用场景

电脑开机、程序运行、编辑器打开文件、查看图片、播放视频、播放音乐、Git查看日志、上传文件、查看聊天记录

# 3.文件移动与重命名

在Node.js中,可以使用rename或renameSync来移动或重命名文件或文件夹

语法:

fs.rename(oldPath,newPath,callback)
fs.renameSync(oldPath,newPath)

参数说明:

  • oldPath 文件当前的路径
  • newPath 文件新的路径
  • callback 操作后的回调

代码示例:

fs.rename('./座右铭.txt','./论语/座右铭.txt',(err)=>{
    if(err) throw err;
    console.log('移动完成')
})
fs.renameSync('./座右铭.txt','./论语/座右铭.txt');

# 4.文件删除

在Node.js中,可以使用unlink或rm来删除文件或文件夹

# 5.文件夹操作

借助Node.js的能力,对文件夹进行创建、读取、删除等操作

方法 说明
mkdir/mkdirSync 创建文件夹
readdir/readdirSync 读取文件夹
rmdir/rmdirSync 删除文件夹

# 5-1mkdir创建文件夹

在Node.js中,可以使用mkdir或mkdirSync来创建文件夹

语法:

fs.mkdir(path[,options],callback)
fs.mkdirSync(path[,options])

参数说明:

  • path 文件路径
  • options 选项配置(可选)
  • callback 操作后的回调

代码示例:

fs.mkdir('./page',(err)=>{
    if(err) throw err;
    console.log('创建完成')
})

# 6.查看资源状态

在Node.js中,可以使用stat或statSync来创建文件夹

语法:

fs.stat(path[,options],callback)
fs.statSync(path[,options])

参数说明:

  • path 文件路径
  • options 选项配置(可选)
  • callback 操作后的回调

代码示例:

// 异步获取状态
fs.stat('./data.txt',(err,data)=>{
    if(err) throw err;
    console.log(data)
})
// 同步获取状态
let data = fs.statSync('./data.txt')

结果值对象结构:

  • size 文件体积
  • birthtime 创建时间
  • mtime 最后修改时间
  • atime 访问时间
  • isFile 检测是否为文件
  • isDirectory 检测是否为文件夹

# 7.相对路径问题

fs模块对资源进行操作时,路径的写法有两种:

  • 相对路径

代码中的路径是相对命令行操作目录

eg:代码--fs.writeFileSync('./data.txt',’love‘)

命令行--D:\nodeJS\12-fs

最终的data.txt'文件会创建在D:\nodeJS\12-fs下,而不是代码所在文件夹下

  • 绝对路径

__dirname 保存的是所在文件的所在目录的绝对路径,不会随着工作目录的变化而变化

更新时间: 2023年6月5日星期一晚上6点19分