FileSystemWritableFileStream:seek() 方法

安全上下文: 此项功能仅在一些支持的浏览器安全上下文(HTTPS)中可用。

FileSystemWritableFileStream 接口的 seek() 方法用于更新文件当前指针的偏移到指定的位置(以字节为单位)。

语法

js
seek(position)

参数

position

一个数字,表示从文件开头起的字节位置。

返回值

一个 Promise,会兑现 undefined

异常

NotAllowedError DOMException

如果 PermissionStatus.state (en-US) 不为 granted,抛出此异常。

TypeError

如果 position 参数不是一个数字或者未定义,抛出此错误。

示例

下面的异步函数会打开“保存文件”选择器,选择器在有文件被选择后会返回一个 FileSystemFileHandle。由此,使用 FileSystemFileHandle.createWritable() 方法创建一个写入流。

然后我们按以下流程写入内容到流中:

  1. 向流中写入一个字符串。
  2. 使用 seek() 方法将指针放置到流的开头。
  3. 向流中写入第二个字符串,覆写第一次写入的。

随后将流关闭。

js
async function saveFile() {
  try {
    // 创建一个新句柄。
    const newHandle = await window.showSaveFilePicker();

    // 创建一个 FileSystemWritableFileStream 用于写入。
    const writableStream = await newHandle.createWritable();

    // 写入我们的文件。
    await writableStream.write("My first file content");
    await writableStream.seek(0);
    await writableStream.write("My second file content");

    // 关闭文件并将内容写入磁盘。
    await writableStream.close();
  } catch (err) {
    console.error(err.name, err.message);
  }
}

如果你运行了上面的函数,然后打开磁盘上被创建的文件,你应该会看到文本“My second file content”。

规范

Specification
File System Standard
# api-filesystemwritablefilestream-seek

浏览器兼容性

BCD tables only load in the browser

参见