FileSystemWritableFileStream: truncate() 方法
注意:此功能在Web Workers 中可用。
truncate()
方法是 FileSystemWritableFileStream
接口的方法,用于将与流关联的文件大小调整为指定的字节数。
如果指定的大小大于当前文件大小,则文件将用 0x00
字节填充。
调用 truncate()
时,文件光标也会更新。如果偏移量小于大小,则保持不变。如果偏移量大于大小,则偏移量将设置为该大小。这可确保后续写入不会出错。
在流关闭之前,不会将任何更改写入磁盘上的实际文件。更改通常会写入临时文件。
语法
js
truncate(size)
参数
size
-
一个数字,指定要将流调整到的字节数。
返回值
一个 Promise
,返回 undefined
。
异常
NotAllowedError
DOMException
-
如果
PermissionStatus.state
不是granted
,则抛出此异常。 QuotaExceededError
DOMException
-
如果文件的新大小大于文件的原始大小,并且超过了浏览器的存储配额,则抛出此异常。
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 |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。