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: Diese Funktion ist in Web Workers verfügbar.
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
Promisezurück, das mit einemFileSystemDirectoryHandlefür ein Unterverzeichnis mit dem angegebenen Namen innerhalb des Verzeichnishandles erfüllt wird, auf dem die Methode aufgerufen wird. FileSystemDirectoryHandle.getFileHandle()-
Gibt ein
Promisezurück, das mit einemFileSystemFileHandlefü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
Promisezurück, das mit einemArrayvon 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
FileSystemDirectoryHandleenthä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> # api-filesystemdirectoryhandle> |
Browser-Kompatibilität
Loading…