FileSystemSyncAccessHandle
Базовая версия 2023
Новое
С марта 2023 года эта функция работает на последних версиях устройств и браузеров. Возможно, эта функция не будет работать на более старых устройствах или браузерах.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Примечание: Эта функция доступна только в посвященных веб-воркерах.
Интерфейс FileSystemSyncAccessHandle API файловой системы представляет собой синхронную ссылку на элемент файловой системы.
Этот класс доступен только внутри посвященных веб-воркеров (чтобы его методы не блокировали выполнение в основном потоке) для файлов в частной файловой системе происхождения, которая не видна конечным пользователям.
В результате его методы не подвергаются тем же проверкам безопасности, что и методы, работающие с файлами в отображаемой пользователям файловой системе, и поэтому значительно более производительны. Это делает их подходящими для значительных масштабных обновлений файлов, таких как изменения в базе данных SQLite.
Интерфейс доступен через метод FileSystemFileHandle.createSyncAccessHandle().
Примечание: В более ранних версиях спецификации close(), flush(), getSize() и truncate() были ошибочно указаны как асинхронные методы, и более старые версии некоторых браузеров реализуют их таким образом. Однако все современные браузеры, поддерживающие эти методы, реализуют их как синхронные методы.
Свойства экземпляра
Нет.
Методы экземпляра
close()-
Закрывает открытую синхронную ссылку на файл, отключая любые дальнейшие операции с ней и освобождая эксклюзивную блокировку, ранее установленную на файле, связанном со ссылкой на файл.
flush()-
Сохраняет любые изменения, внесенные в файл, связанный со ссылкой, посредством метода
write(), на диск. getSize()-
Возвращает размер файла, связанного со ссылкой, в байтах.
read()-
Считывает содержимое файла, связанного со ссылкой, в указанный буфер, необязательно с заданным смещением.
truncate()-
Изменяет размер файла, связанного со ссылкой, на указанное количество байтов.
write()-
Записывает содержимое указанного буфера в файл, связанный со ссылкой, необязательно с заданным смещением.
Примеры
Следующая асинхронная функция обработчика событий находится внутри веб-воркера. При получении сообщения из основного потока она:
- Создает синхронную ссылку на доступ к файлу.
- Получает размер файла и создает
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 |
Совместимость браузеров
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
FileSystemSyncAccessHandle |
102 | 102 | 111 | 88 | 15.2 | 109 | 111 | 74 | 15.2 | 21.0 | 109 |
close |
102 | 102 | 111 | 88 | 15.2 | 109 | 111 | 74 | 15.2 | 21.0 | 109 |
flush |
102 | 102 | 111 | 88 | 15.2 | 109 | 111 | 74 | 15.2 | 21.0 | 109 |
getSize |
102 | 102 | 111 | 88 | 15.2 | 109 | 111 | 74 | 15.2 | 21.0 | 109 |
read |
102 | 102 | 111 | 88 | 15.2 | 109 | 111 | 74 | 15.2 | 21.0 | 109 |
truncate |
102 | 102 | 111 | 88 | 15.2 | 109 | 111 | 74 | 15.2 | 21.0 | 109 |
write |
102 | 102 | 111 | 88 | 15.2 | 109 | 111 | 74 | 15.2 | 21.0 | 109 |
См. также
© 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