Skip to content

Commit

Permalink
style: fs md 标题调整
Browse files Browse the repository at this point in the history
  • Loading branch information
Mooo-star committed Jul 19, 2024
1 parent 7d91196 commit 7068f63
Showing 1 changed file with 13 additions and 7 deletions.
20 changes: 13 additions & 7 deletions docs/node/fs.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ keywords:
toc: content
---

### 介绍
## 介绍

fs 模块,作为 Node.js 平台中的一个核心组件,主要负责处理文件系统相关的操作。该模块提供了一系列用于文件管理的功能,例如文件的读取、写入、更新以及删除等。

在我们学习 fs 模块之前呢,首先要了解一下文件的权限。因为 fs 模块需要对文件进行操作,会涉及到操作权限的问题,所以需要先清楚文件权限是什么,都有哪些权限。

### Linux 文件权限
## Linux 文件权限

| 代表字符 | 权限 | 数字表示 | 对文件含义 | 对目录含义 |
| :------: | :--: | :------: | :--------: | :--------------------: |
Expand All @@ -39,7 +39,7 @@ drwxr-xr-x 107 user staff 3.3K 6 21 13:22 node_modules

第一位代表是文件还是文件夹,d 开头代表文件夹,- 开头的代表文件,而后面九位就代表当前用户、用户所属组和其他用户的权限位,按每三位划分,分别代表读(r)、写(w)和执行(x),- 代表没有当前位对应的权限。

### 标识位
## 标识位

Node.js 中,标识位代表着对文件的操作方式,如可读、可写、即可读又可写等等,在下面用一张表来表示文件操作的标识位和其对应的含义。

Expand Down Expand Up @@ -70,7 +70,7 @@ Node.js 中,标识位代表着对文件的操作方式,如可读、可写、

> r+ 和 w+ 的区别,当文件不存在时,r+ 不会创建文件,而会抛出异常,但 w+ 会创建文件;如果文件存在,r+ 不会自动清空文件,但 w+ 会自动把已有文件的内容清空。
### fs 同步/异步
## fs 同步/异步

使用 `fs` 前,我们要先来了解一下 fs 的 **同步/异步** 操作。

Expand All @@ -82,7 +82,7 @@ Node.js 中,标识位代表着对文件的操作方式,如可读、可写、
- callback
- promise

#### 同步方式
### 同步方式

拿官方的例子来说一下

Expand Down Expand Up @@ -115,7 +115,7 @@ unlink done

可以看到,同步的 API 会阻塞 Node.js 事件循环和下一步的执行,直到操作完成。有异常会立即跑出,可以用 `try ... catch` 来处理,也可以允许冒泡。

#### callback
### callback

```js
const { unlink } = require('node:fs');
Expand Down Expand Up @@ -146,7 +146,7 @@ unlink has error

这个时候执行就已经不一样了,很明显的,永远先输出后面的 `unlink done` ,因为回调的形式将回调函数异步调用,经过事件循环,在合适的阶段去执行这个函数。但是第一个参数始终保留用于异常。如果操作成功,则第一个参数为 `null` 或者 `undefined`,反之返回错误信息。

#### Promise
### Promise

```js
const { unlink } = require('node:fs/promises');
Expand Down Expand Up @@ -221,3 +221,9 @@ unlink promise has error
> 当需要最大性能(在执行时间和内存分配方面)时,node:fs 模块 API 的基于回调的版本比使用 promise API 更可取。
>
> 至于如何抉择,就看各位大佬们的抉择了
## 操作文件

下面介绍一下基础的使用吧。

### 读取文件

0 comments on commit 7068f63

Please sign in to comment.