Spec-Zone.ru › Web APIs

FileSystemSyncAccessHandle: метод flush()

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

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

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

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

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

Метод flush() интерфейса FileSystemSyncAccessHandle сохраняет любые изменения, внесённые в файл, связанный с обработчиком, через метод write(), на диске.

Обратите внимание, что вы должны вызывать этот метод только в том случае, если вам нужно, чтобы изменения были сохранены на диске в определённое время, в противном случае вы можете позволить операционной системе выполнить это в подходящий момент, что в большинстве случаев будет нормально.

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

Синтаксис

flush()

Параметры

Нет.

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

Нет (undefined).

Исключения

InvalidStateError DOMException

Выбрасывается, если связанный обработчик доступа уже закрыт.

Примеры

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

  • Создаёт синхронный обработчик доступа к файлам.
  • Получает размер файла и создаёт 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-flush

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
flush 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/flush

Spec-Zone.ru

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