node.js学习笔记二——如何处理文件系统

304 阅读1分钟

fs文件系统

1.使用fs模块

const fs = require('fs');

所有的文件系统操作都具有同步的、回调的、以及基于 promise 的形式。

2.同步

image.png

const fs = require('fs');

try {
    fs.unlinkSync('delete.js');
    console.log('/delete.js 已被成功地删除');
  } catch (err) {
    // 处理错误
    console.log('删除失败')
}

运行node fs.js,控制台返回/delete.js 已被成功地删除,并删除delete.js文件

同步的形式阻塞 Node.js 事件循环和进一步的 JavaScript 执行,直到操作是完成的。 异常是被立即地抛出,且可以被使用 try…catch 处理,或者可以被允许冒泡。

3.回调

const fs = require('fs');

fs.unlink('delete.js', (err) => {
    if (err) throw err;
    console.log('delete.js 已被成功地删除');
});

运行node fs.js,控制台返回/delete.js 已被成功地删除,并删除delete.js文件
回调的形式把一个完成回调函数作为其最后一个参数,并且异步地调用该操作。 被传给完成回调的参数取决于方法,但是第一个参数总是被预留给一个异常。 如果操作被成功地完成,则第一个参数是 null 或 undefined。
4.Promise

const fsPromises = require("fs").promises;

(async function(path) {
  try {
     await fsPromises.unlink(path)
     console.log(`${path} 已被成功地删除`);
   } catch (error) {
     console.error('有一个错误:', error.message);
   }
})('delete.js');

在普通函数定义的前面加上async关键字 普通函数就变成了异步函数 异步函数默认的返回值是promise对象 在异步函数内部使用throw关键字进行错误的抛出

await关键字: *1.它只能出现在异步函数中 *2.await promise 它可以暂停异步函数的执行等待promise对象返回结果后再向下执行函数*