Spec-Zone.ru › Web APIs

FileSystemSyncAccessHandle: метод close()

Базовая версия 2023
Новое

С марта 2023 года эта функция работает на последних устройствах и версиях браузеров. Возможно, эта функция не будет работать на более старых устройствах или браузерах.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.

Примечание: Эта функция доступна только в специализированных веб-воркерах.

Метод close() интерфейса FileSystemSyncAccessHandle закрывает открытый синхронный дескриптор файла, отключая дальнейшие операции с ним и освобождая эксклюзивную блокировку, ранее установленную на файле, связанном с дескриптором.

Примечание: В более ранних версиях спецификации close(), flush(), getSize() и truncate() были ошибочно определены как асинхронные методы, и более старые версии некоторых браузеров реализуют их таким образом. Однако все современные браузеры, поддерживающие эти методы, реализуют их как синхронные методы.

Синтаксис

close()

Параметры

Нет.

Возвращаемое значение

Ничего (undefined).

Исключения

Нет.

Примеры

Следующая асинхронная функция обработчика событий находится внутри веб-воркера. При получении сообщения с основного потока она:

  • Создаёт синхронный дескриптор доступа к файлу.
  • Получает размер файла и создаёт ArrayBuffer для его хранения.
  • Считывает содержимое файла в буфер.
  • Кодирует сообщение и записывает его в конец файла.
  • Сохраняет изменения на диске и закрывает дескриптор доступа.
onmessage = async (e) => {
  // Retrieve message sent to work from main script
  const message = e.data;

  // Get handle to draft file
  const root = await navigator.storage.getDirectory();
  const draftHandle = await root.getFileHandle("draft.txt", { create: true });
  // Get sync access handle
  const accessHandle = await draftHandle.createSyncAccessHandle();

  // Get size of the file.
  const fileSize = accessHandle.getSize();
  // Read file content to a buffer.
  const buffer = new DataView(new ArrayBuffer(fileSize));
  const readBuffer = accessHandle.read(buffer, { at: 0 });

  // Write the message to the end of the file.
  const encoder = new TextEncoder();
  const encodedMessage = encoder.encode(message);
  const writeBuffer = accessHandle.write(encodedMessage, { at: readBuffer });

  // Persist changes to disk.
  accessHandle.flush();

  // Always close FileSystemSyncAccessHandle if done.
  accessHandle.close();
};

Спецификации

Спецификация
Файловая система
# api-filesystemsyncaccesshandle-close

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
close 102 102 111 88 15.2 109 111 74 15.2 21.0 109
sync_version 108 108 111 94 16.4 109 111 74 16.4 21.0 109

См. также

  • API файловой системы
  • API доступа к файловой системе: упрощение доступа к локальным файлам

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/FileSystemSyncAccessHandle/close

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API