node 的fs
文档密密麻麻的 api 非常多,毕竟全面支持对文件系统的操作。文档组织的很好,操作基本分为文件操作、目录操作、文件信息、流这个大方面,编程方式也支持同步、异步和 Promise。
本文记录了几个文档中没详细描写的问题,可以更好地串联fs
文档思路:
- 文件描述符
- 同步、异步与 Promise
- 目录与目录项
- 文件信息
- stream
🔍 关注公众号“心谭博客” / 👉 前往 xxoo521.com / 欢迎交流和指正
文件描述符
文件描述符是一个非负整数。它是一个索引值,操作系统可以根据它来找到对应的文件。
在 fs 的很多底层 api 中,需要用到文件描述符。在文档中,描述符通常用fd
来代表。例如:fs.read(fd, buffer, offset, length, position, callback)
。与这个 api 相对应的是:fs.readFile(path[, options], callback)
。
因为操作系统对文件描述符的数量有限制,因此在结束文件操作后,别忘记 close:
const fs = require("fs");
fs.open("./db.json", "r", (err, fd) => {
if (err) throw err;
// 文件操作...
// 完成操作后,关闭文件
fs.close(fd, err => {
if (err) throw err;
});
});
同步、异步与 Promise
所有文件系统的 api 都有同步和异步两种形式。
同步写法
不推荐使用同步 api,会阻塞线程。
try {
const buf = fs.readFileSync("./package.json");
console.log(buf.toString("utf8"