FileSystemWritableFileStream: write() 方法

基准线 2025
新推出

自 ⁨2025 年 9 月⁩起,此功能适用于最新设备和浏览器版本。此功能可能不适用于较旧的设备或浏览器。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

注意:此功能在 Web Workers 中可用。

write() 方法是 FileSystemWritableFileStream 接口的一个方法,它将内容写入调用该方法的文件的当前文件指针偏移量处。

在流关闭之前,实际文件磁盘上不会写入任何更改。更改通常写入临时文件。此方法还可用于在流中查找字节点并截断以修改文件包含的总字节数。

语法

js
write(data)

参数

data

可以是以下之一

  • 要写入的文件数据,形式为 ArrayBufferTypedArrayDataViewBlob 或字符串。
  • 包含以下属性的对象:
    type

    一个字符串,可以是 "write""seek""truncate" 之一。

    data

    要写入的文件数据。可以是 ArrayBufferTypedArrayDataViewBlob 或字符串。如果 type 设置为 "write",则此属性是必需的。

    position

    如果使用 "seek" 类型,则当前文件指针应移动到的字节位置。如果 type 设置为 "write",也可以设置此项,在这种情况下,写入将从指定位置开始。

    size

    一个表示流应包含的字节数的数字。如果 type 设置为 "truncate",则此属性是必需的。

返回值

一个返回 undefinedPromise

异常

NotAllowedError DOMException

如果 PermissionStatus.state 不是 granted,则会抛出此异常。

QuotaExceededError

如果文件的新大小大于文件的原始大小,并且超出了浏览器的 存储配额,则抛出此异常。

TypeError

如果 data 为 undefined,或者 positionsize 无效,则抛出此异常。

示例

以下异步函数打开“保存文件”选择器,一旦选择了文件,它会返回一个 FileSystemFileHandle。从中,使用 FileSystemFileHandle.createWritable() 方法创建可写流。

然后将文本字符串写入流,随后关闭流。

js
async function saveFile() {
  try {
    // create a new handle
    const newHandle = await window.showSaveFilePicker();

    // create a FileSystemWritableFileStream to write to
    const writableStream = await newHandle.createWritable();

    // write our file
    await writableStream.write("This is my file content");

    // close the file and write the contents to disk.
    await writableStream.close();
  } catch (err) {
    console.error(err.name, err.message);
  }
}

以下示例显示了可以传递到 write() 方法中的不同选项。

js
// just pass in the data (no options)
writableStream.write(data);

// writes the data to the stream from the determined position
writableStream.write({ type: "write", position, data });

// updates the current file cursor offset to the position specified
writableStream.write({ type: "seek", position });

// resizes the file to be size bytes long
writableStream.write({ type: "truncate", size });

规范

规范
文件系统
# api-filesystemwritablefilestream-write

浏览器兼容性

另见