FileSystemWritableFileStream:seek() 方法
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
备注: 此特性在 Web Worker 中可用。
FileSystemWritableFileStream
接口的 seek()
方法用于更新文件当前指针的偏移到指定的位置(以字节为单位)。
语法
js
seek(position)
参数
position
-
一个数字,表示从文件开头起的字节位置。
返回值
一个 Promise
,会兑现 undefined
。
异常
NotAllowedError
DOMException
-
如果
PermissionStatus.state
不为granted
,抛出此异常。 TypeError
-
如果
position
参数不是一个数字或者未定义,抛出此异常。
示例
下面的异步函数会打开“保存文件”选择器,选择器在有文件被选择后会返回一个 FileSystemFileHandle
。由此,使用 FileSystemFileHandle.createWritable()
方法创建一个写入流。
然后我们按以下流程写入内容到流中:
- 向流中写入一个字符串。
- 使用
seek()
方法将指针放置到流的开头。 - 向流中写入第二个字符串,覆写第一次写入的。
随后将流关闭。
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