fs 模块
fs 全称为
file system
,称之为文件系统
,是 Node.js 中的内置模块
,可以对计算机中的磁盘进行操作。
本章节会介绍如下几个操作:
- 文件写入
- 文件读取
- 文件移动与重命名
- 文件删除
- 文件夹操作
- 查看资源状态
文件写入
文件写入就是将 数据 保存到 文件 中,我们可以使用如下几个方法来实现该效果
方法 | 说明 |
---|---|
writeFile | 异步写入 |
writeFileSync | 同步写入 |
appendFile / appendFileSync | 追加写入 |
createWriteStream | 流式写入 |
writeFile 异步写入
语法: fs.writeFile(file, data[, options], callback)
参数说明:
- file 文件名
- data 待写入的数据
- options 选项设置
(可选)
- callback 写入回调
返回值: undefined
代码示例:
// require 是 Node.js 环境中的 '全局' 变量,用来导入模块
const fs = require('fs')
// 将 [三人行,必有我师焉。] 写入到当前文件夹下的 [座右铭.txt] 文件中
fs.writeFile('./座右铭.txt', '三人行,必有我师焉。', err =>{
// 如果写入失败,则回调函数调用时,会传入错误对象,如写入成功,会传入 null
if(err){
console.log(err)
return
}
console.log('写入成功')
})
writeFileSync 同步写入
语法: fs.writeFileSync(file, data[, options])
参数与 fs.writeFile
大体一致,只是没有 callback 参数
返回值:undefined
代码示例:
try{
fs.writeFileSync('./座右铭.txt', '三人行,必有我师焉。')
}catch(e){
console.log(e)
}
Node.js 中的磁盘操作是由其他
线程
完成的,结果的处理有两种模式:
- 同步处理 JavaScript 主线程
会等待
其线程的执行结果,然后再继续执行主线程的代码,效率较低
- 异步处理 JavaScript 主线程
不会等待
其线程的执行结果,直接执行后续的主线程代码,效率较好
appendFile / appendFileSync 追加写入
appendFile
作用是在文件尾部追加内容,appendFile
语法与writeFile
语法完全相同
语法:
fs.appendFile(file, data[, options], callback)
fs.appendFileSync(file, data[, options])
返回值:二者都为 undefined
实例代码:
fs.append('./座右铭.txt', '则其善者而从之,其不善者而改之。', err =>{
if(err) throw err
console.log('追加成功')
})
fs.appendFileSync('./座右铭.txt','\r\n温故而知新,可以为师矣')
createWriteStream 流式写入
语法:fs.createWriteStream(path[, options])
参数说明:
path
文件路径options
选项配置(可选
)
**返回值: **Object
代码示例:
let ws = fs.createWriteStream('./观书有感.txt')
//写入数据到流
ws.write('半亩方塘一鉴开\r\n')
ws.write('天光云影共徘徊\r\n')
ws.write('问渠那得清如许\r\n')
ws.write('为有源头活水来\r\n')
//关闭写入流,表明已没有数据要被写入可写流
ws.end(