Skip to content

Commit

Permalink
fix: 14.1.0-200505
Browse files Browse the repository at this point in the history
  • Loading branch information
h7lin committed May 5, 2020
1 parent c51ca10 commit 8bc3c96
Show file tree
Hide file tree
Showing 75 changed files with 312 additions and 301 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ exec('cat *.js missing_file | wc -l', (error, stdout, stderr) => {

exec(3) POSIX 系统调用不同, `child_process.exec()` 不会替换现有的进程,且使用 shell 来执行命令。

如果调用此方法的 [`util.promisify()`] 版本,则返回的 `Promise` 会返回具有 `stdout` 属性和 `stderr` 属性的 `Object`
如果调用此方法的 [`util.promisify()`] 版本,则返回 `Promise`(会传入具有 `stdout` 属性和 `stderr` 属性的 `Object`
返回的 `ChildProcess` 实例会作为 `child` 属性附加到该 `Promise`
如果出现错误(包括导致退出码不是 0 的任何错误),则返回被拒绝的 Promise,并带上与回调中相同的 `error` 对象,但是还有两个另外的属性 `stdout` `stderr`

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ const child = execFile('node', ['--version'], (error, stdout, stderr) => {
`encoding` 选项可用于指定用于解码 stdout stderr 输出的字符编码。
如果 `encoding` `'buffer'` 或无法识别的字符编码,则传给回调的将会是 `Buffer` 对象。

如果调用此方法的 [`util.promisify()`] 版本,则返回的 `Promise` 会返回具有 `stdout` 属性和 `stderr` 属性的 `Object`
如果调用此方法的 [`util.promisify()`] 版本,则返回 `Promise`(会传入具有 `stdout` 属性和 `stderr` 属性的 `Object`
返回的 `ChildProcess` 实例会作为 `child` 属性附加到该 `Promise`
如果出现错误(包括导致退出码不是 0 的任何错误),则返回被拒绝的 Promise,并带上与回调中相同的 `error` 对象,但是还有两个另外的属性 `stdout` `stderr`

Expand Down
2 changes: 1 addition & 1 deletion domain/class_domain.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

* Extends: {EventEmitter}
* 继承自: {EventEmitter}

The `Domain` class encapsulates the functionality of routing errors and
uncaught exceptions to the active `Domain` object.
Expand Down
2 changes: 1 addition & 1 deletion errors/class_systemerror.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

* Extends: {errors.Error}
* 继承自: {errors.Error}

Node.js generates system errors when exceptions occur within its runtime
environment. These usually occur when an application violates an operating
Expand Down
2 changes: 1 addition & 1 deletion fs/class_fs_dir.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
added: v12.12.0
-->

代表目录流的类
表示目录流的类

[`fs.opendir()`][`fs.opendirSync()`] [`fsPromises.opendir()`] 创建。

Expand Down
2 changes: 1 addition & 1 deletion fs/class_fs_fswatcher.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ added: v0.5.8

* 继承自 {EventEmitter}

成功调用 [`fs.watch()`] 方法将会返回一个新的 `fs.FSWatcher` 对象。
成功调用 [`fs.watch()`] 方法会返回新建的 `fs.FSWatcher` 对象。

每当指定监视的文件被修改时,所有的 `fs.FSWatcher` 对象都会触发 `'change'` 事件。

2 changes: 1 addition & 1 deletion fs/class_fs_readstream.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ added: v0.1.93

* 继承自: {stream.Readable}

成功调用 `fs.createReadStream()` 将会返回一个新的 `fs.ReadStream` 对象。
成功调用 `fs.createReadStream()` 会返回新建的 `fs.ReadStream` 对象。


4 changes: 2 additions & 2 deletions fs/dir_close.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ added: v12.12.0
* 返回: {Promise}

异步地关闭目录的底层资源句柄。
随后的读取将会导致错误
后续的读取会导致错误

返回一个 `Promise`,将会在关闭资源之后被解决
返回 `Promise`(在资源被关闭之后会被 resolve)

2 changes: 1 addition & 1 deletion fs/dir_close_callback.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ added: v12.12.0
* `err` {Error}

异步地关闭目录的底层资源句柄。
随后的读取将会导致错误
后续的读取会导致错误

关闭资源句柄之后将会调用 `callback`

2 changes: 1 addition & 1 deletion fs/dir_closesync.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ added: v12.12.0
-->

同步地关闭目录的底层资源句柄。
随后的读取将会导致错误
后续的读取会导致错误

4 changes: 2 additions & 2 deletions fs/dir_read.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
added: v12.12.0
-->

* 返回: {Promise} 包含 {fs.Dirent|null}
* 返回: 包含 {fs.Dirent|null} {Promise}

通过 readdir(3) 异步地读取下一个目录项作为 [`fs.Dirent`]

读取完成之后,将会返回一个 `Promise`,它被解决时将会返回 [`fs.Dirent`] `null`如果没有更多的目录项要读取)。
读取完成之后,则会返回 `Promise`(resolve 时会传入 [`fs.Dirent`] `null`如果读取不到目录项))。

此函数返回的目录项不遵循操作系统的底层目录机制所提供的特定顺序。
遍历目录时添加或删除的目录项可能会或可能不会包含在遍历的结果中。
Expand Down
2 changes: 1 addition & 1 deletion fs/dir_read_callback.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ added: v12.12.0

通过 readdir(3) 异步地读取下一个目录项作为 [`fs.Dirent`]

读取完成之后,将会调用 `callback` 并传入 [`fs.Dirent`] `null`如果没有更多的目录项要读取)。
读取完成之后,则会调用 `callback`(传入 [`fs.Dirent`] `null`如果读取不到目录项))。

此函数返回的目录项不遵循操作系统的底层目录机制所提供的特定顺序。
遍历目录时添加或删除的目录项可能会或可能不会包含在遍历的结果中。
Expand Down
2 changes: 1 addition & 1 deletion fs/dir_readsync.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ added: v12.12.0

通过 readdir(3) 同步地读取下一个目录项作为 [`fs.Dirent`]

如果没有更多的目录项要读取,则将会返回 `null`
如果读取不到目录项,则将会返回 `null`

此函数返回的目录项不遵循操作系统的底层目录机制所提供的特定顺序。
遍历目录时添加或删除的目录项可能会或可能不会包含在遍历的结果中。
Expand Down
2 changes: 1 addition & 1 deletion fs/dirent_isfile.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ added: v10.10.0

* 返回: {boolean}

如果 `fs.Dirent` 对象描述常规文件,则返回 `true`
如果 `fs.Dirent` 对象描述普通的文件,则返回 `true`

2 changes: 1 addition & 1 deletion fs/file_open_constants.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
</tr>
<tr>
<td><code>O_TRUNC</code></td>
<td>表明如果文件存在且是常规文件、并且文件成功打开以进行写入访问,则其长度应截断为零。</td>
<td>表明如果文件存在且是普通的文件、并且文件成功打开以进行写入访问,则其长度应截断为零。</td>
</tr>
<tr>
<td><code>O_APPEND</code></td>
Expand Down
20 changes: 10 additions & 10 deletions fs/file_paths.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@

大多数 `fs` 操作接受的文件路径可以指定为字符串、[`Buffer`]或使用 `file:` 协议的 [`URL`] 对象。
大多数 `fs` 操作接受的文件路径可以指定为字符串、[`Buffer`] [`URL`] 对象(使用 `file:` 协议)

字符串形式的路径被解析为标识绝对或相对文件名的 UTF-8 字符序列。
相对路径将相对于 `process.cwd()` 指定的当前工作目录进行解析
字符串形式的路径会被解释为 UTF-8 字符序列(标识绝对或相对的文件名)
相对路径会相对于当前工作目录(由 `process.cwd()` 指定)进行处理

POSIX 上使用绝对路径的示例:

```js
const fs = require('fs');
fs.open('/open/some/file.txt', 'r', (err, fd) => {
fs.open('/文件.txt', 'r', (err, fd) => {
if (err) throw err;
fs.close(fd, (err) => {
if (err) throw err;
Expand All @@ -20,7 +20,7 @@ fs.open('/open/some/file.txt', 'r', (err, fd) => {
POSIX 上使用相对路径(相对于 `process.cwd()`)的示例:

```js
fs.open('file.txt', 'r', (err, fd) => {
fs.open('文件.txt', 'r', (err, fd) => {
if (err) throw err;
fs.close(fd, (err) => {
if (err) throw err;
Expand All @@ -29,22 +29,22 @@ fs.open('file.txt', 'r', (err, fd) => {
```

使用 [`Buffer`] 指定的路径主要用于将文件路径视为不透明字节序列的某些 POSIX 操作系统。
在这样的系统上,单个文件路径可以包含使用多种字符编码的子序列。
与字符串路径一样,`Buffer` 路径可以是相对路径或绝对路径
在这些系统上,单个文件路径可以包含使用多种字符编码的子序列。
与字符串路径一样,`Buffer` 路径也可以是相对或绝对的

POSIX 上使用绝对路径的示例:

```js
fs.open(Buffer.from('/open/some/file.txt'), 'r', (err, fd) => {
fs.open(Buffer.from('/文件.txt'), 'r', (err, fd) => {
if (err) throw err;
fs.close(fd, (err) => {
if (err) throw err;
});
});
```

Windows 上,Node.js 遵循每个驱动器工作目录的概念
Windows 上,Node.js 遵循独立驱动器工作目录的概念
当使用没有反斜杠的驱动器路径时,可以观察到此行为。
例如,`fs.readdirSync('C:\\')` 可能会返回与 `fs.readdirSync('C:')` 不同的结果。
有关详细信息,参见[ MSDN 页面][MSDN-Rel-Path]
详见[ MSDN 页面][MSDN-Rel-Path]

67 changes: 38 additions & 29 deletions fs/file_system_flags.md
Original file line number Diff line number Diff line change
@@ -1,54 +1,63 @@

`flag` 选项采用字符串时,可用以下标志
`flag` 选项采用字符串时,则以下标志均可用

* `'a'` - 打开文件用于追加。如果文件不存在,则创建该文件。
* `'a'`: 打开文件用于追加。
如果文件不存在,则创建该文件。

* `'ax'` - `'a'` 相似,但如果路径已存在则失败
* `'ax'`: 类似于 `'a'`,但如果路径存在,则失败

* `'a+'` - 打开文件用于读取和追加。如果文件不存在,则创建该文件。
* `'a+'`: 打开文件用于读取和追加。
如果文件不存在,则创建该文件。

* `'ax+'` - `'a+'` 相似,但如果路径已存在则失败
* `'ax+'`: 类似于 `'a+'`,但如果路径存在,则失败

* `'as'` - 以同步模式打开文件用于追加。如果文件不存在,则创建该文件。
* `'as'`: 打开文件用于追加(在同步模式中)。
如果文件不存在,则创建该文件。

* `'as+'` - 以同步模式打开文件用于读取和追加。如果文件不存在,则创建该文件。
* `'as+'`: 打开文件用于读取和追加(在同步模式中)。
如果文件不存在,则创建该文件。

* `'r'` - 打开文件用于读取。如果文件不存在,则出现异常。
* `'r'`: 打开文件用于读取。
如果文件不存在,则会发生异常。

* `'r+'` - 打开文件用于读取和写入。如果文件不存在,则出现异常。
* `'r+'`: 打开文件用于读取和写入。
如果文件不存在,则会发生异常。

* `'rs+'` - 以同步模式打开文件用于读取和写入。指示操作系统绕过本地的文件系统缓存。
* `'rs+'`: 打开文件用于读取和写入(在同步模式中)。
指示操作系统绕过本地的文件系统缓存。

这对于在 NFS 挂载上打开文件时非常有用,因为它允许跳过可能过时的本地缓存
它对 I/O 性能有非常实际的影响,因此除非需要,否则不建议使用此标志
这对于在 NFS 挂载上打开文件时非常有用,因为它可以跳过可能过时的本地缓存
它对 I/O 性能有非常实际的影响,因此不建议使用此标志(除非真的需要)

这不会将 `fs.open()` `fsPromises.open()` 转换为同步的阻塞调用
这不会把 `fs.open()` `fsPromises.open()` 变成同步的阻塞调用
如果需要同步的操作,则应使用 `fs.openSync()` 之类的。

* `'w'` - 打开文件用于写入。如果文件不存在则创建文件,如果文件已存在则截断文件。
* `'w'`: 打开文件用于写入。
如果文件不存在则创建文件,如果文件存在则截断文件。

* `'wx'` - `'w'` 相似,但如果路径已存在则失败
* `'wx'`: 类似于 `'w'`,但如果路径存在,则失败

* `'w+'` - 打开文件用于读取和写入。如果文件不存在则创建文件,如果文件已存在则截断文件。
* `'w+'`: 打开文件用于读取和写入。
如果文件不存在则创建文件,如果文件存在则截断文件。

* `'wx+'` - `'w+'` 相似,但如果路径已存在则失败
* `'wx+'`: 类似于 `'w+'`,但如果路径存在,则失败

`flag` 也可以是一个数字,参见 open(2) 文档。
`flag` 也可以是数字,参见 open(2) 文档。
常用的常量可以从 `fs.constants` 获取。
Windows 上,标志会被适当地转换为等效的标志,例如 `O_WRONLY` 转换为 `FILE_GENERIC_WRITE``O_EXCL|O_CREAT` 转换为能被 `CreateFileW` 接受的 `CREATE_NEW`
Windows 上,标志会被转换为合适的等效标志,例如 `O_WRONLY` 转换为 `FILE_GENERIC_WRITE``O_EXCL|O_CREAT` 转换为能被 `CreateFileW` 接受的 `CREATE_NEW`

特有的 `'x'` 标志 open(2) 中的 `O_EXCL` 标志)可以确保路径是新创建的。
POSIX 系统上,即使路径是一个符号链接且指向一个不存在的文件,它也会被视为已存在
该特有标志不一定适用于网络文件系统
排他性标志 `'x'` open(2) 中的 `O_EXCL` 标志)可以确保路径是新创建的。
POSIX 系统上,即使路径是符号链接(指向不存在的文件),该路径也会被视为存在
排他性标志不一定适用于网络文件系统

Linux 上,当以追加模式打开文件时,写入无法指定位置
内核会忽略位置参数,并始终将数据追加到文件的末尾
Linux 上,当以追加模式打开文件时,则写入时无法指定位置
内核会忽略位置参数,并始终追加数据到文件的末尾

如果要修改文件而不是覆盖文件,则 `flag` 选项需要被设置为 `'r+'` 而不是默认的 `'w'`

某些标志的行为是特定于平台的
例如,在 macOS Linux 上使用 `'a+'` 标志打开目录(参见下面的示例)会返回一个错误
而在 Windows FreeBSD 上,则返回一个文件描述符或 `FileHandle`
有些标志的行为是特定于平台的
例如,在 macOS Linux 上使用 `'a+'` 标志打开目录会返回错误
但是,在 Windows FreeBSD 上,则会返回文件描述符或 `FileHandle`

```js
// 在 macOS 和 Linux 上:
Expand All @@ -62,8 +71,8 @@ fs.open('<目录>', 'a+', (err, fd) => {
});
```

Windows 上,使用 `'w'` 标志打开现存的隐藏文件(通过 `fs.open()``fs.writeFile()` `fsPromises.open()`会抛出 `EPERM`
现存的隐藏文件可以使用 `'r+'` 标志打开用于写入。
Windows 上,使用 `'w'` 标志打开(通过 `fs.open()``fs.writeFile()` `fsPromises.open()`现有的隐藏文件,则会抛出 `EPERM`
现有的隐藏文件可以使用 `'r+'` 标志打开用于写入。

调用 `fs.ftruncate()` `fsPromises.ftruncate()` 可以用于重置文件的内容。

2 changes: 1 addition & 1 deletion fs/file_type_constants.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
</tr>
<tr>
<td><code>S_IFREG</code></td>
<td>表示常规文件</td>
<td>表示普通的文件</td>
</tr>
<tr>
<td><code>S_IFDIR</code></td>
Expand Down
4 changes: 2 additions & 2 deletions fs/filehandle_read_buffer_offset_length_position.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ added: v10.0.0

`offset` buffer 中开始写入的偏移量。

`length` 是一个整数,指定要读取的字节数。
`length` 是整数,指定要读取的字节数。

`position` 参数指定从文件中开始读取的位置。
如果 `position` `null`,则从当前文件位置读取数据,并更新文件位置。
如果 `position` 是整数,则文件位置将保持不变
如果 `position` 是整数,则文件位置会保持不变

成功读取之后,`Promise` 会被解决并带上一个对象,对象上有一个 `bytesRead` 属性(指定读取的字节数)和一个 `buffer` 属性(指向传入的 `buffer` 参数)。

10 changes: 5 additions & 5 deletions fs/filehandle_write_buffer_offset_length_position.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,19 @@ changes:
* `position` {integer}
* 返回: {Promise}

`buffer` 写入到文件
写入 `buffer` 到文件

`Promise` 会被解决并带上一个对象,对象包含一个 `bytesWritten` 属性(指定写入的字节数)和一个 `buffer` 属性(指向写入的 `buffer`)。

`offset` 决定 buffer 中要被写入的部位,`length` 是一个整数,指定要写入的字节数。
`offset` 决定 buffer 中要被写入的部位,`length` 是整数,指定要写入的字节数。

`position` 指定文件开头的偏移量(数据应该被写入的位置)。
`position` 指定文件开头的偏移量(数据要被写入的位置)。
如果 `typeof position !== 'number'`,则数据会被写入当前的位置。
参见 pwrite(2)

在同一个文件上多次使用 `filehandle.write()` 且不等待 `Promise` 被解决(或被拒绝)是不安全的。
对于这种情况,建议使用 [`fs.createWriteStream()`]

Linux 上,当以追加模式打开文件时,写入无法指定位置
内核会忽略位置参数,并始终将数据追加到文件的末尾
Linux 上,当以追加模式打开文件时,则写入时无法指定位置
内核会忽略位置参数,并始终追加数据到文件的末尾

6 changes: 3 additions & 3 deletions fs/filehandle_write_string_position_encoding.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ changes:

`Promise` 会被解决并带上一个对象,对象包含一个 `bytesWritten` 属性(指定写入的字节数)和一个 `buffer` 属性(指向写入的 `string`)。

`position` 指定文件开头的偏移量(数据应该被写入的位置)。
`position` 指定文件开头的偏移量(数据要被写入的位置)。
如果 `position` 的类型不是一个 `number`,则数据会被写入当前的位置。
参见 pwrite(2)

Expand All @@ -27,6 +27,6 @@ changes:
在同一个文件上多次使用 `filehandle.write()` 且不等待 `Promise` 被解决(或被拒绝)是不安全的。
对于这种情况,建议使用 [`fs.createWriteStream()`]

Linux 上,当以追加模式打开文件时,写入无法指定位置
内核会忽略位置参数,并始终将数据追加到文件的末尾
Linux 上,当以追加模式打开文件时,则写入时无法指定位置
内核会忽略位置参数,并始终追加数据到文件的末尾

6 changes: 3 additions & 3 deletions fs/filehandle_writev_buffers_position.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ added: v12.9.0

`Promise` 会被解决并带上一个对象,对象包含一个 `bytesWritten` 属性(表明写入的字节数)和一个 `buffers` 属性(指向 `buffers` 输入)。

`position` 指定文件开头的偏移量(数据应该被写入的位置)。
`position` 指定文件开头的偏移量(数据要被写入的位置)。
如果 `typeof position !== 'number'`,则数据会被写入当前的位置。

在同一文件上多次调用 `writev()` 且不等待前面的操作完成,这是不安全的。

Linux 上,当以追加模式打开文件时,写入无法指定位置
内核会忽略位置参数,并始终将数据追加到文件的末尾
Linux 上,当以追加模式打开文件时,则写入时无法指定位置
内核会忽略位置参数,并始终追加数据到文件的末尾

Loading

0 comments on commit 8bc3c96

Please sign in to comment.