三、 fs模块
1. 简介
fs模块可以实现创建文件、删除文件、修改/写入文件、读取文件、移动文件等,还可以操作文件夹。可以实现与硬盘有关的操作。
2. fs.writeFile() 写入文件(异步)
语法:fs.writeFile(file,data,options?,callback(err)?)
参数:
- File 文件名,文件若不存在,会被自动创建
- data 写入的数据
- options 可选的选项
- callback 回调,参数为err,若成功则err返回为null
使用:
1 | const fs = require("fs"); |

注意点:
fs.writeFile()是一个异步方法。
3. fs.writeFileSync() 写入文件(同步)
语法:fs.writeFileSync(file,data,options?)
参数:
- File 文件名,文件若不存在,会被自动创建
- data 写入的数据
- options 可选的选项
使用:
1 | const fs = require("fs"); |
注意点:
fs.writeFileSync()是一个同步方法,会逐行向下执行。它和
fs.writeFile()不同的地方在于没有回调函数。
4. fs.appendFile() 追加文件内容
语法:fs.writeFile(file,data,options?,callback(err)?
参数:
- File 文件名,文件若不存在,不会被自动创建
- data 写入的数据
- options 可选的选项
使用:
1 | const fs = require("fs"); |
注意点:
参数与
fs.writeFile()一致fs.writeFile()也可以实现追加内容。只需要将第三个参数的option追加
1 | const fs = require('fs') |
5. fs.appendFileSync() 追加文件内容(同步)
略,参数与fs.writeFileSync() 一致,
注意点:
- 文件若不存在,不会被自动创建。
6. fs.createWriteStream()
语法:
fs.createWriteStream(file)创建流fs.write(content: string)写入流fs.close()关闭流(可选)
参数:
- File 文件名,文件若不存在,会被自动创建
使用:
1 | const fs = require("fs"); |

注意点:
fs.close()可以不调用- 应用场景是,比如安装软件,安装软件的过程就是一个文件写入硬盘的过程。再比如写logs等等。
7. fs.readFile() 读取文件(异步)
语法:fs.readFile(file,options?,callback(err,data)?)
参数:
- File 文件名,文件若不存在,会被自动创建
- options 可选的选项
- callback 回调,参数为err,若成功则err返回为null
使用:
1 | const fs = require("fs"); |

注意点:
8. fs.readFileSync() 读取文件(同步)
略,基本一致,就是没有回调函数
9. fs.createReadStream() 流式读取
语法:fs.createReadStream(file)
参数:
- File 文件名,文件若不存在,会被自动创建
- options 可选的选项
- callback 回调,参数为err,若成功则err返回为null
使用:
1 | const fs = require("fs"); |
注意点:
- 流式读取,读取的是文件的一部分内容,普通的读取是一次性读取全部内容。一次读取长度默认为65536字节。
- chunk.length可以查看读取的长度
- 该方法一般用于读取大文件,它占用内存空间比直接用readFile要小。
- 通过以下代码,可以看两种读取方式所占用内存的不同大小
1 | const fs = require("fs"); |
10. fs.rename(oldPath, newPath, callback) 重命名文件(异步)
语法:fs.rename(oldPath: string,newPath: string,callback?)
参数:
- oldPath 源文件路径,如./test.txt
- newPath 源文件路径的新名称,如./testRename.txt
- callback 回调,参数为err,若成功则err返回为null
使用:
1 | const fs = require("fs"); |
11. fs.renameSync(oldPath, newPath) 重命名文件(同步)
略
12. 文件删除
在nodejs中,文件删除有两种方式
fs.unlink(filename)与fs.unlinkSync(filename)- ``fs.rm(filename)
与fs.rmSync(filename)`
1 | const fs = require("fs"); |
注: fs.rm方法在14.4版本以上支持
13. mkdir(dir, option?,callback) 和mkdirSync(dir, option?,callback) 创建文件夹
语法:
- fs.mkdir(path,option,callback)
使用:
1 | fs.mkdir("./test/test1/test.txt", { recursive: true }, (err) => { |
14. 读取文件夹 readdir与readdirSync
语法:
- fs.mkdir(path,option,callback)
使用:
1 | fs.readdir("./test", (err, data) => { |
15. 删除文件夹 rmdir() 与rmdirSync()
语法:
- fs.mkdir(path,option,callback)
使用:
1 | fs.rm("./test", { recursive: true }, (err) => { |
注意点:
- 支持递归删除
- 可能被废除,不建议使用
- rm方法不仅可以用来删除文件。
{ recursive: true }的意思是级联删除
16. 查看文件状态 fs.stat(file,callback)
语法:
- fs.stat(file,callback)
使用:
1 | const fs = require("fs"); |
结果:

注意点:
返回的data参数中,
isFile方法表示判断是否为文件。isDirectory方法表示判断是否为文件夹。一般在用于制作资源管理器时,文件名可以使用
readdir和readfile的方式读取,而具体信息则使用stat方式读取

17. __dirname 来表示绝对路径
表示__dirname 所在文件夹的绝对路径