Skip to main content

【fs.createWriteStream】

历史版本

版本变更
v16.10.0

如果提供了 fd,则 fs 选项不需要 open 方法。

v16.10.0

如果 autoClosefalse,则 fs 选项不需要 close 方法。

v15.4.0

选项 fd 接受 FileHandle 参数。

v14.0.0

emitClose 默认更改为 true

v13.6.0, v12.17.0

选项 fs 允许覆盖使用的 fs 实现。

v12.10.0

启用 emitClose 选项。

v7.6.0

参数 path 可以是使用 file: 协议的 WHATWG URL 对象。

v7.0.0

传入的 options 对象永远不会被修改。

v5.5.0

现在支持 autoClose 选项。

v2.3.0

传入的 options 对象现在可以是字符串。

v0.1.31

新增于: v0.1.31

参数

  • path <string> | <Buffer>| <URL>
  • options <string> | <Object> flags <string> 请参阅对文件系统 flags 的支持。 默认值: 'w'。 encoding <string> 默认值: 'utf8' fd <integer> | <FileHandle> 默认值: null mode <integer> 默认值: 0o666 autoClose <boolean> 默认值: true emitClose <boolean> 默认值: true start <integer> fs <Object> | <null> 默认值: null
  • 返回: <fs.WriteStream>

options 还可以包括 start 选项,以允许在文件开头的某个位置写入数据,允许的值在 [0, Number.MAX_SAFE_INTEGER] 范围内。 修改文件而不是替换它可能需要将 flags 选项设置为 r+ 而不是默认的 wencoding 可以是 <Buffer> 接受的任何一种。

如果将 autoClose 设置为 true(默认行为),则在 'error' 或 'finish' 时文件描述符将自动关闭。 如果 autoClosefalse,则即使出现错误,文件描述符也不会关闭。 关闭它并确保没有文件描述符泄漏是应用程序的责任。

默认情况下,流将在销毁后触发 'close' 事件。 将 emitClose 选项设置为 false 以更改此行为。

通过提供 fs 选项,可以覆盖 open、write、writevclose 的相应 fs 实现。 在没有 writev() 的情况下覆盖 write() 会降低性能,因为某些优化 (_writev()) 将被禁用。 当提供了 fs 选项时,则至少需要覆盖 writewritev 之一。 如果没有提供 fd 选项,则还需要覆盖 open。 如果 autoClosetrue,则还需要覆盖 close

<fs.ReadStream> 一样,如果指定了 fd,则 <fs.WriteStream> 将忽略 path 参数并使用指定的文件描述符。 这意味着不会触发 'open' 事件。 fd 应该是阻塞的;非阻塞 fd 应该传给 <net.Socket>

代码示例

const fs = require('fs')
const ws = fs.createWriteStream('./index.txt', {
flags: 'w', // 默认读取
encoding: 'utf8', // 默认utf8
fd: null, // 取拿一个文件,默认null,createReadStream自己处理得到
mode: 0o666, // 默认值可读可写不可操作
highWaterMark: 1,
autoClose: true, // 默认 ture,读取完毕后关闭文件
})
ws.write('hello', function () {})