FileSystemWritableFileStream: truncate() 方法

安全上下文:此功能仅在安全上下文(HTTPS)中可用,在某些或所有支持的浏览器中。

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

truncate() 方法是 FileSystemWritableFileStream 接口的方法,用于将与流关联的文件大小调整为指定的字节数。

如果指定的大小大于当前文件大小,则文件将用 0x00 字节填充。

调用 truncate() 时,文件光标也会更新。如果偏移量小于大小,则保持不变。如果偏移量大于大小,则偏移量将设置为该大小。这可确保后续写入不会出错。

在流关闭之前,不会将任何更改写入磁盘上的实际文件。更改通常会写入临时文件。

语法

js
truncate(size)

参数

size

一个数字,指定要将流调整到的字节数。

返回值

一个 Promise,返回 undefined

异常

NotAllowedError DOMException

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

QuotaExceededError DOMException

如果文件的新大小大于文件的原始大小,并且超过了浏览器的存储配额,则抛出此异常。

TypeError

如果 size 不是数字或未定义,则抛出此异常。

示例

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

接下来,我们写入流

  1. 一个文本字符串被写入流。
  2. truncate() 方法用于将文件大小调整为 8 个字节。
  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("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 的浏览器中加载。

另请参阅