Spec-Zone.ru › Web APIs

FileSystemSyncAccessHandle: метод read()

Базовая 2023
Новое

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

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

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

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

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

Синтаксис

read(buffer, options)

Параметры

buffer

Объект ArrayBuffer или ArrayBufferView (например, DataView), представляющий буфер, в который должно быть считано содержимое файла. Обратите внимание, что вы не можете напрямую манипулировать содержимым ArrayBuffer. Вместо этого вы создаёте один из объектов массивов с типом, например, Int8Array или DataView, который представляет буфер в определённом формате, и используете его для чтения и записи содержимого буфера.

options Необязательный

Объект параметров, содержащий следующие свойства:

at

Число, представляющее смещение в байтах, с которого должен быть прочитан файл.

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

Число, представляющее количество считанных из файла байтов.

Исключения

InvalidStateError DOMException

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

TypeError

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

Примеры

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

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

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

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

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

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

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

Spec-Zone.ru

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