fs 模块(文件系统)

fs 模块(文件系统)fs 全称为 filesystem 称之为文件系统 是 Node js 中的内置模块 可以对计算机中的磁盘进行操作

大家好,欢迎来到IT知识分享网。


什么是fs?

fs 全称为 file system ,称之为 文件系统 ,是 Node.js 中的 内置模块 ,可以对计算机中的磁盘进行操作。

慎用相对路径

  • (1)在使用run Code执行代码 或 使用终端进行执行代码时,使用相对路径写入文件时,文件会以run Code的目录为基准文件进行创建,可能不是自己想要的效果
  • (2)尽量使用绝对路径,可看 path 模块

一、文件写入

文件写入就是将 数据 保存到 文件 中,我们可以使用如下几个方法来实现该效果

方法 说明
writeFile 异步写入
writeFileSync 同步写入
appendFile / appendFileSync 追加写入
createWriteStream 流式写入

1、writeFile 异步写入

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

参数说明:

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

返回值:undefined

代码示例:

// 1.导入fs模块 const fs = require('fs') // 2.异步写入文件 fs.writeFile('./座右铭.txt', "三人行,则必有我师焉", err => { 
     // err 写入失败:错误对象 写入成功:null if (err) { 
     console.log('写入失败') return } console.log('写入成功') }) 

2、writeFileSync 同步写入

语法: fs.writeFileSync(file, data[, options])

参数说明:

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

返回值:undefined

代码示例:

const fs = require('fs') fs.writeFileSync('./座右铭.txt', '三人行,必有我师焉。'); 

Node.js 中的磁盘操作是由其他 线程 完成的,结果的处理有两种模式:

  • 同步处理 JavaScript 主线程 会等待 其他线程的执行结果,然后再继续执行主线程的代码,效率较低
  • 异步处理 JavaScript 主线程 不会等待 其他线程的执行结果,直接执行后续的主线程代码,效率较好

3、appendFile / appendFileSync 追加写入

appendFile 作用是在文件尾部追加内容,appendFile 语法与 writeFile 语法完全相同

返回值:二者都为 undefined

代码示例:

// 导入 fs const fs = require('fs') // 异步追加 fs.appendFile('./座右铭.txt', '\r\n择其善者而从之,其不善者而改之', err => { 
     if (err) { 
     console.log('写入失败'); return } console.log('写入成功'); }) // 同步追加 fs.appendFileSync('./座右铭.txt', '\r\n温故而知新,可以为师矣') 

4、createWriteStream 流式写入

语法:fs.createWriteStream(path[, options])

参数说明:

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

返回值: Object

代码示例:

// 1.导入 fs const fs = require('fs') // 2.创建写入流对象 const ws = fs.createWriteStream('./观书有感.txt') // 3.write ws.write('半亩方塘一鉴开\r\n') ws.write('天光云影共徘徊\r\n') ws.write('问渠那得清如许\r\n') ws.write('唯有源头活水来\r\n') // 4.关闭通道 ws.close() 

程序打开一个文件是需要消耗资源的 ,流式写入可以减少打开关闭文件的次数。
流式写入方式适用于 大文件写入或者频繁写入 的场景, writeFile 适合于 写入频率较低的场景

二、文件读取

文件读取顾名思义,就是通过程序从文件中取出其中的数据,我们可以使用如下几种方式:

方法 说明
readFile 异步读取
readFileSync 同步读取
createReadStream 流式读取

1、 readFile 异步读取

语法:fs.readFile(path[, options], callback)

参数说明:

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

返回值:undefined

代码示例:

// 导入 fs 模块 const fs = require('fs'); // 异步读取 fs.readFile('./座右铭.txt', (err, data) => { 
     if(err) throw err; console.log(data); }); // 异步读取文件并设置编码格式为UTF-8 fs.readFile('./座右铭.txt', 'utf-8',(err, data) => { 
     if(err) throw err; console.log(data); }); 

2、readFileSync 同步读取

语法:fs.readFileSync(path[, options])

参数说明:

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

返回值:string | Buffer

代码示例:

// 导入 fs 模块 const fs = require('fs'); // 同步读取 let data1 = fs.readFileSync('./座右铭.txt'); // 同步读取文件并设置编码格式为UTF-8 let data2 = fs.readFileSync('./座右铭.txt', 'utf-8'); 

3、createReadStream 流式读取

语法:fs.createReadStream(path[, options])

参数说明:

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

返回值:Object

代码示例:

// 导入 fs 模块 const fs = require('fs'); //创建读取流对象 let rs = fs.createReadStream('./观书有感.txt'); //每次取出 64k 数据后执行一次 data 回调 rs.on('data', data => { 
     console.log(data); console.log(data.length); }); //读取完毕后, 执行 end 回调 rs.on('end', () => { 
     console.log('读取完成') }) 

三、文件移动与重命名

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

参数说明:

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

代码示例:

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

四、文件删除

在 Node.js 中,我们可以使用 unlinkunlinkSync 来删除文件
语法:
fs.unlink(path, callback)
fs.unlinkSync(path)
参数说明:



  • path 文件路径
  • callback 操作后的回调

代码示例:

// 导入 fs 模块 const fs = require('fs'); // 异步删除 fs.unlink('./test.txt', err => { 
     if(err) throw err; console.log('删除成功'); }); // 同步删除 fs.unlinkSync('./test2.txt'); 

五、文件夹操作

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

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

1、mkdir 创建文件夹

在 Node.js 中,我们可以使用 mkdirmkdirSync 来创建文件夹

参数说明:

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

代码示例:

// 导入 fs 模块 const fs = require('fs'); //异步创建文件夹 fs.mkdir('./page', err => { 
     if(err) throw err; console.log('创建成功'); }); //递归异步创建 // recursive 递归的 fs.mkdir('./1/2/3', { 
    recursive: true}, err => { 
     if(err) throw err; console.log('递归创建成功'); }); //递归同步创建文件夹 fs.mkdirSync('./x/y/z', { 
    recursive: true}); 

2、readdir 读取文件夹

在 Node.js 中,我们可以使用 readdirreaddirSync 来读取文件夹

参数说明:

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

代码示例:

// 导入 fs 模块 const fs = require('fs'); //异步读取 fs.readdir('./论语', (err, data) => { 
     if(err) throw err; console.log(data); }); //同步读取 let data = fs.readdirSync('./论语'); console.log(data); 

3、rmdir 删除文件夹

在 Node.js 中,我们可以使用 rmdirrmdirSync 来删除文件夹

参数说明:

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

代码示例:

// 导入 fs 模块 const fs = require('fs'); //异步删除文件夹 fs.rmdir('./page', err => { 
     if(err) throw err; console.log('删除成功'); }); //异步递归删除文件夹 fs.rmdir('./1', { 
    recursive: true}, err => { 
     if(err) { 
     console.log(err); } console.log('递归删除') }); //同步递归删除文件夹 fs.rmdirSync('./x', { 
    recursive: true}) 

六、查看资源状态

在 Node.js 中,我们可以使用 ·stat· 或 ·statSync· 来查看资源的详细信息

参数说明:

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

代码示例:

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

结果值对象结构:

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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/116508.html

(0)
上一篇 2025-11-28 14:45
下一篇 2025-11-28 15:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信