DirectoryReaderSync
Нестандартно: Эта функция нестандартна и не входит в стандарт. Не используйте её на сайтах, работающих с веб-клиентами: она может не работать для всех пользователей. Также могут быть значительные несовместимости между реализациями, и поведение может измениться в будущем.
Устарело: Эта функция больше не рекомендуется. Хотя некоторые браузеры могут её всё ещё поддерживать, она может быть уже удалена из соответствующих веб-стандартов, может быть в процессе удаления или поддерживаться только для совместимости. Избегайте её использования и, если возможно, обновите существующий код; см. таблицу совместимости в конце этой страницы для принятия решения. Имейте в виду, что эта функция может перестать работать в любой момент.
Интерфейс DirectoryReaderSync позволяет вам читать записи в каталоге.
Предупреждение: Этот интерфейс устарел и больше не поддерживается стандартами. Не используйте его больше. Используйте API файлов и записей каталогов вместо этого.
Основные концепции
Перед вызовом единственного метода в этом интерфейсе, readEntries(), создайте объект DirectoryEntrySync. Но DirectoryEntrySync (так же как и FileEntrySync) — это не тип данных, который можно передавать между приложением, вызывающим функцию, и потоком Web Worker. Это не проблема, так как вам не нужно, чтобы основное приложение и поток-воркер видели один и тот же JavaScript-объект; вам нужно только, чтобы они имели доступ к тем же файлам. Вы можете сделать это, передав список filesystem: URL-адресов (которые просто строки) вместо списка записей. Вы также можете использовать filesystem: URL для поиска записи с помощью resolveLocalFileSystemURL(). Это позволит вам получить обратно объект DirectoryEntrySync (а также FileEntrySync).
Пример
В следующем фрагменте кода из HTML5Rocks (web.dev) мы создаем Web Worker и передаем данные из него в основное приложение.
// Taking care of the browser-specific prefixes.
window.resolveLocalFileSystemURL =
window.resolveLocalFileSystemURL || window.webkitResolveLocalFileSystemURL;
// Create web workers
const worker = new Worker("worker.js");
worker.onmessage = (e) => {
const urls = e.data.entries;
urls.forEach((url) => {
window.resolveLocalFileSystemURL(url, (fileEntry) => {
// Print out file's name.
console.log(fileEntry.name);
});
});
};
worker.postMessage({ cmd: "list" });
Следующий код worker.js получает содержимое каталога.
// worker.js
// Taking care of the browser-specific prefixes.
self.requestFileSystemSync =
self.webkitRequestFileSystemSync || self.requestFileSystemSync;
// Global for holding the list of entry file system URLs.
const paths = [];
function getAllEntries(dirReader) {
const entries = dirReader.readEntries();
for (const entry of entries) {
// Stash this entry's filesystem in URL
paths.push(entry.toURL());
// If this is a directory, traverse.
if (entry.isDirectory) {
getAllEntries(entry.createReader());
}
}
}
// Forward the error to main app.
function onError(e) {
postMessage(`ERROR: ${e.toString()}`);
}
self.onmessage = (e) => {
const cmd = e.data.cmd;
// Ignore everything else except our 'list' command.
if (!cmd || cmd !== "list") {
return;
}
try {
const fs = requestFileSystemSync(TEMPORARY, 1024 * 1024 /*1MB*/);
getAllEntries(fs.root.createReader());
self.postMessage({ entries: paths });
} catch (e) {
onError(e);
}
};
Метод
readEntries()
Возвращает список записей из определенного каталога. Вызывайте этот метод до тех пор, пока не будет возвращен пустой массив.
Синтаксис
readEntries()
Параметры
Нет.
Возвращаемое значение
Массив, содержащий FileEntrySync и DirectoryEntrySync.
Исключения
Этот метод может вызывать исключение DOMException со следующими кодами:
| Исключение | Описание |
|---|---|
NOT_FOUND_ERR | Каталог не существует. |
INVALID_STATE_ERR | Каталог был изменен с момента обработки первого вызова readEntries. |
SECURITY_ERR | Браузер определил, что доступ к метаданным небезопасен. |
Спецификации
Эта функция больше не является частью каких-либо спецификаций. Она больше не проходит процесс стандартизации.
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
DirectoryReaderSync |
13 | 79 | Нет | Нет | Нет | 18 | Нет | Нет | Нет | 1.0 | 37 |
См. также
© 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/DirectoryReaderSync