FileSystemWritableFileStream: seek() 方法

基准线 2025
新推出

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

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

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

seek() 方法是 FileSystemWritableFileStream 接口的一部分,它会在调用该方法时,将当前文件的光标偏移量更新到指定的位置(以字节为单位)。

语法

js
seek(position)

参数

position

一个指定文件开头字节位置的数字。

返回值

一个返回 undefinedPromise

异常

NotAllowedError DOMException

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

TypeError

如果 position 不是数字或未定义,则会抛出错误。

示例

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

接下来,我们将内容写入流

  1. 一个文本字符串被写入流。
  2. seek() 方法用于将光标置于流的开头。
  3. 第二个文本字符串被写入流的开头,覆盖了第一次写入的内容。

然后关闭流。

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("My first file content");
    await writableStream.seek(0);
    await writableStream.write("My second file content");

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

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

规范

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

浏览器兼容性

另见