FileSystemSyncAccessHandle.truncate()

Baseline 2023

Newly available

Since March 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

FileSystemSyncAccessHandle インターフェイスの truncate() メソッドは、ハンドルに対応するファイルのサイズを指定のバイト数にします。

構文

js
truncate(newSize)

引数

newSize

ファイルのリサイズ後のバイト数です。

返値

undefined で解決する Promise を返します。

例外

InvalidStateError DOMException

対応するアクセスハンドルが既に閉じられているか、ファイルのバイナリーデータの変更が失敗したとき投げられます。

QuotaExceededError DOMException

newSize がファイルのもとのサイズより大きく、ブラウザーのストレージ制限を超えるとき投げられます。

js
async function truncateFile() {
  // draft ファイルのハンドルを取得する
  const root = await navigator.storage.getDirectory();
  const draftHandle = await root.getFileHandle("draft.txt", { create: true });
  // 同期式アクセスハンドルを取得する
  const accessHandle = await draftHandle.createSyncAccessHandle();

  // ファイルを 0 バイトに切り詰める
  accessHandle.truncate(0);

  // 変更をディスクに書き込む
  accessHandle.flush();

  // 完了したら、常に FileSystemSyncAccessHandle を閉じる
  accessHandle.close();
}

メモ: 仕様書の以前のバージョンでは、close()flush()getSize()truncate() は誤って非同期のメソッドとされていました。これは現在では変更されていますが、まだ非同期バージョンをサポートしているブラウザーもあります。

仕様書

Specification
File System Standard
# api-filesystemsyncaccesshandle-truncate

ブラウザーの互換性

BCD tables only load in the browser

関連情報