FileSystemWritableFileStream:seek() 方法

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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

备注: 此特性在 Web Worker 中可用。

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

语法

js
seek(position)

参数

position

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

返回值

一个 Promise,会兑现 undefined

异常

NotAllowedError DOMException

如果 PermissionStatus.state 不为 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
# api-filesystemwritablefilestream-seek

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
seek

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
See implementation notes.

参见