FileSystemDirectoryHandle
Baseline 2023
Newly available
Since March 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Das FileSystemDirectoryHandle
-Interface der File System API bietet einen Zugriff auf ein Dateisystemverzeichnis.
Auf das Interface kann über die Methoden window.showDirectoryPicker()
, StorageManager.getDirectory()
, DataTransferItem.getAsFileSystemHandle()
und FileSystemDirectoryHandle.getDirectoryHandle()
zugegriffen werden.
Instanzeigenschaften
Erbt Eigenschaften von seinem Elternteil, FileSystemHandle
.
Instanzmethoden
Erbt Methoden von seinem Elternteil, FileSystemHandle
.
Reguläre Methoden:
FileSystemDirectoryHandle.getDirectoryHandle()
-
Gibt ein
Promise
zurück, das mit einemFileSystemDirectoryHandle
für ein Unterverzeichnis mit dem angegebenen Namen innerhalb des Verzeichnishandles erfüllt wird, auf dem die Methode aufgerufen wird. FileSystemDirectoryHandle.getFileHandle()
-
Gibt ein
Promise
zurück, das mit einemFileSystemFileHandle
für eine Datei mit dem angegebenen Namen innerhalb des Verzeichnisses erfüllt wird, auf dem die Methode aufgerufen wird. FileSystemDirectoryHandle.removeEntry()
-
Versucht, einen Eintrag asynchron zu entfernen, wenn das Verzeichnishandle eine Datei oder ein Verzeichnis mit dem angegebenen Namen enthält.
FileSystemDirectoryHandle.resolve()
-
Gibt ein
Promise
zurück, das mit einemArray
von Verzeichnisnamen vom übergeordneten Handle zum angegebenen Kindereintrag erfüllt wird, wobei der Name des Kindereintrags als letztes Array-Element erscheint.
Asynchrones Iterator Methoden:
FileSystemDirectoryHandle.entries()
-
Gibt einen neuen asynchronen Iterator eines gegebenen Objekts eigener enumerierbarer
"key, value"
Paare zurück. FileSystemDirectoryHandle.keys()
-
Gibt einen neuen asynchronen Iterator zurück, der die Schlüssel für jedes Element in
FileSystemDirectoryHandle
enthält. FileSystemDirectoryHandle.values()
-
Gibt einen neuen asynchronen Iterator zurück, der die Werte für jedes Element im
FileSystemDirectoryHandle
-Objekt enthält. FileSystemDirectoryHandle[Symbol.asyncIterator]()
-
Gibt einen neuen asynchronen Iterator eines gegebenen Objekts eigener enumerierbarer
"key, value"
Paare zurück.
Beispiele
Verzeichnis-Handle zurückgeben
Das folgende Beispiel gibt ein Verzeichnis-Handle mit dem angegebenen Namen zurück; falls das Verzeichnis noch nicht existiert, wird es erstellt.
const dirName = "directoryToGetName";
// assuming we have a directory handle: 'currentDirHandle'
const subDir = currentDirHandle.getDirectoryHandle(dirName, { create: true });
Dateipfad zurückgeben
Die folgende asynchrone Funktion verwendet resolve()
, um den Pfad zu einer ausgewählten Datei relativ zu einem angegebenen Verzeichnishandle zu finden.
async function returnPathDirectories(directoryHandle) {
// Get a file handle by showing a file picker:
const handle = await self.showOpenFilePicker();
if (!handle) {
// User cancelled, or otherwise failed to open a file.
return;
}
// Check if handle exists inside our directory handle
const relativePaths = await directoryHandle.resolve(handle);
if (relativePath === null) {
// Not inside directory handle
} else {
// relativePath is an array of names, giving the relative path
for (const name of relativePaths) {
// log each entry
console.log(name);
}
}
}
Handles für alle Dateien in einem Verzeichnis zurückgeben
Das folgende Beispiel durchsucht ein Verzeichnis rekursiv, um FileSystemFileHandle
-Objekte für jede Datei in diesem Verzeichnis zurückzugeben:
async function* getFilesRecursively(entry) {
if (entry.kind === "file") {
const file = await entry.getFile();
if (file !== null) {
file.relativePath = getRelativePath(entry);
yield file;
}
} else if (entry.kind === "directory") {
for await (const handle of entry.values()) {
yield* getFilesRecursively(handle);
}
}
}
for await (const fileHandle of getFilesRecursively(directoryHandle)) {
console.log(fileHandle);
}
Spezifikationen
Specification |
---|
File System Standard # api-filesystemdirectoryhandle |
Browser-Kompatibilität
BCD tables only load in the browser