FileSystemDirectoryHandle
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since März 2023.
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.
Die FileSystemDirectoryHandle-Schnittstelle der File System API bietet einen Zugriff auf ein Dateisystemverzeichnis.
Die Schnittstelle kann über die Methoden window.showDirectoryPicker(), StorageManager.getDirectory(), DataTransferItem.getAsFileSystemHandle() und FileSystemDirectoryHandle.getDirectoryHandle() aufgerufen werden.
Instanz-Eigenschaften
Erbt Eigenschaften von ihrem Elternteil, FileSystemHandle.
Instanz-Methoden
Erbt Methoden von ihrem Elternteil, FileSystemHandle.
Reguläre Methoden:
FileSystemDirectoryHandle.getDirectoryHandle()-
Gibt ein
Promisezurück, das mit einemFileSystemDirectoryHandlefür ein Unterverzeichnis mit dem angegebenen Namen innerhalb des Verzeichnisses 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 asynchron, einen Eintrag 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 Eltern-Handle bis zum angegebenen Kind-Eintrag erfüllt wird, wobei der Name des Kind-Eintrags das letzte Array-Element ist.
Asynchroner Iterator Methoden:
FileSystemDirectoryHandle.entries()-
Gibt einen neuen asynchronen Iterator der eigenen aufzählbaren Eigenschaften
[key, value]-Paare eines gegebenen Objekts 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 jeden Index im
FileSystemDirectoryHandle-Objekt enthält. FileSystemDirectoryHandle[Symbol.asyncIterator]()-
Gibt einen neuen asynchronen Iterator der eigenen aufzählbaren Eigenschaften
[key, value]-Paare eines gegebenen Objekts zurück.
Beispiele
>Verzeichnishandle zurückgeben
Das folgende Beispiel gibt ein Verzeichnishandle 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 = await 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 durchläuft rekursiv ein Verzeichnis, 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…