fs模块(File system)
fs 模块可用于与文件系统进行交互(以类似于标准 POSIX 函数的方式)。
所有的文件系统操作都具有同步的、回调的、以及基于 promise 的形式。
引入fs模块
const fs = require('fs');
const proFs = require('fs/promises'); //当你使用promise api来操作文件的时候需要引入 fs/promise
正文开始
1.同步的示例 ==> 删除文件
- 同步的形式会阻塞 Node.js 事件循环和进一步的 JavaScript 执行,直到操作完成。
- 异常会被立即地抛出,可以使用 try…catch 处理,也可以冒泡。
try {
fs.unlinkSync('./test01.txt');
//unlinkSyn这个api是用来删除文件 , 如操作 , 我删除了与当前js文件同级目录下的'test01.txt'这个文件
console.log('已成功删除文件');
} catch (err) {
// 处理错误
console.log('错误信息' , err)
}
2.回调的示例 ==> 删除文件
- 异步的形式总是把完成回调作为其最后一个参数 , 传给完成回调的参数取决于具体的方法,但第一个参数总是预留给异常 , 如果操作被成功的完成,则第一参数会为
null或undefined
fs.unlink('./test01.txt' , (err) => {
if(err) throw err;
console.log('已成功的删除文件');
})
3.promise的示例 ==> 删除文件
- 基于promise的操作会返回promise(当异步操作完成时被解决)
(async (path) => {
try {
await proFs.unlink(path);
console.log(`已成功删除文件${path}`)
} catch (error) {
console.log('出错', error)
}
})('./test01.txt')
4.回调基于promise的操作的顺序 ==> 修改文件名称
- 当使用异步的方法时,无法保证顺序。我们希望stat操作一定在rename之后完成 , 所以要在rename成功回调执行stat操作
// rename参数 '旧文件.txt', '新文件.txt', cb
fs.rename('./text01.txt' , './newText01.txt' , (err) => {
if(err) throw err;
// 名称修改成功 , 读取属性
fs.stat('./newText01.txt' , (err , stat) => {
if(err) throw err;
console.log(`文件属性:${JSON.stringify(stat)}`)
})
})
4.1或者基于promise的API
(async (from, to) => {
try {
await proFs.rename(from, to);
const stat = await proFs.stat(to);
console.log(`文件属性: ${JSON.stringify(stat)}`)
} catch (err) {
console.log('出错', err.message)
}
})('./newText01.txt', 'test01.txt')
以上.