FileSystemWritableFileStream: truncate() 方法
注意:此功能在 Web Workers 中可用。
truncate() 方法是 FileSystemWritableFileStream 接口的一部分,它将与流关联的文件大小调整为指定的字节数。
如果指定的大小大于当前文件大小,则文件将用 0x00 字节进行填充。
调用 truncate() 时,文件指针也会更新。如果偏移量小于指定大小,则保持不变。如果偏移量大于指定大小,则将偏移量设置为该大小。这确保后续写入不会出错。
在流关闭之前,不会将任何更改写入磁盘上的实际文件。更改通常会写入临时文件。
语法
js
truncate(size)
参数
size-
一个指定要将流调整到的字节数的数字。
返回值
一个返回 undefined 的 Promise。
异常
NotAllowedErrorDOMException-
如果
PermissionStatus.state不是granted,则会抛出此异常。 QuotaExceededError-
如果文件的新大小大于文件的原始大小,并且超出了浏览器的 存储配额,则会抛出此错误。
TypeError-
如果
size不是数字或未定义,则会抛出此错误。
示例
以下异步函数打开“保存文件”选择器,一旦选择了文件,它会返回一个 FileSystemFileHandle。从中,使用 FileSystemFileHandle.createWritable() 方法创建可写流。
接下来,我们将内容写入流
- 将一个文本字符串写入流。
- 使用
truncate()方法将文件大小调整为 8 字节。 - 将第二个文本字符串写入流的开头,覆盖第一个写入的内容。
然后关闭流。
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 first file content");
await writableStream.truncate(8);
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);
}
}
如果运行上述函数,然后打开磁盘上创建的相应文件,您应该会看到文本“This is my second file content”。
规范
| 规范 |
|---|
| 文件系统 # api-filesystemwritablefilestream-truncate |
浏览器兼容性
加载中…