Spec-Zone.ru › Web APIs

FileSystemHandle: метод remove()

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

Примечание: Этот функционал доступен в Web Workers.

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

Нестандартный: Этот функционал нестандартный и не соответствует стандартам. Не используйте его на сайтах, работающих с веб-браузерами: он не будет работать для каждого пользователя. Также могут быть большие несовместимости между реализациями, и поведение может измениться в будущем.

Метод remove() интерфейса FileSystemHandle запрашивает удаление записи, представленной дескриптором, из базовой файловой системы.

Метод remove() позволяет удалить файл или каталог непосредственно по его дескриптору. Без этого метода вам нужно было бы получить дескриптор родительского каталога и затем вызвать FileSystemDirectoryHandle.removeEntry() для его удаления.

Вы также можете вызвать remove() на корневом каталоге частной файловой системы Origin для очистки его содержимого, после чего будет создана новая пустая частная файловая система OPFS.

Синтаксис

remove()
remove(options)

Параметры

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

Объект, определяющий параметры удаления. Возможные свойства:

recursive Необязательно

Логическое значение, по умолчанию false. Если установлено в true, и запись — каталог, его содержимое будет удалено рекурсивно.

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

Объект Promise, который выполнится со значением undefined.

Исключения

InvalidModificationError DOMException

Выбрасывается, если recursive установлено в false и удаляемая запись — каталог с подкаталогами.

NoModificationAllowedError DOMException

Выбрасывается, если браузер не смог получить эксклюзивную блокировку записи.

NotAllowedError DOMException

Выбрасывается, если PermissionStatus не granted.

NotFoundError DOMException

Выбрасывается, если запись не найдена.

Примеры

Наша FileSystemHandle.remove() демонстрация (см. исходный код) — приложение для создания файлов. Вы можете ввести текст в <textarea> и нажать кнопку "Сохранить файл" <button>, и приложение откроет диалог выбора файла, позволяющий сохранить этот текст в текстовый файл на вашей локальной файловой системе. Вы также можете выбрать удаление созданных файлов.

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

Диалог выбора файла, дескриптор файла и сам файл (если вы создаёте новый файл) создаются с помощью window.showSaveFilePicker(). Текст записывается в файл через FileSystemFileHandle.createWritable().

После создания файла в файловой системе в приложении создаётся запись (см. processNewFile() в исходном коде):

  • Ссылка на дескриптор файла сохраняется в массиве под названием savedFileRefs, чтобы к нему можно было легко обратиться позже.
  • В пользовательском интерфейсе добавляется элемент списка под заголовком "Сохранённые файлы" с отображением имени файла и кнопки "Удалить".

При нажатии кнопки "Удалить" выполняется функция deleteFile(), которая выглядит так:

async function deleteFile(e) {
  for (const handle of savedFileRefs) {
    if (handle.name === e.target.id + ".txt") {
      await handle.remove();
      savedFileRefs = savedFileRefs.filter(
        (handle) => handle.name !== e.target.id + ".txt",
      );
      e.target.parentElement.parentElement.removeChild(e.target.parentElement);
    }
  }
}

Рассмотрим этот код:

  1. Для каждого дескриптора файла, сохранённого в массиве savedFileRefs, мы проверяем его имя, чтобы убедиться, что оно соответствует атрибуту id кнопки, которая инициировала событие.
  2. При совпадении мы вызываем метод FileSystemHandle.remove() на этом дескрипторе для удаления файла из базовой файловой системы.
  3. Мы также удаляем соответствующий дескриптор из массива savedFileRefs.
  4. Наконец, мы удаляем элемент списка, связанный с этим файлом, в пользовательском интерфейсе.

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

Этот функционал не является частью какой-либо спецификации, но может стать стандартным в будущем. Смотрите whatwg/fs#9 для подробностей.

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
remove 110 110 Нет 96 Нет 110 Нет 74 Нет 21.0 110

См. также

  • API файловой системы
  • Демонстрация FileSystemHandle.remove()

© 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/FileSystemHandle/remove

Spec-Zone.ru

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