FileSystemDirectoryHandle
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit März 2023 browserübergreifend verfügbar.
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 Verzeichnis im Dateisystem.
Das Interface kann über die Methoden window.showDirectoryPicker(), StorageManager.getDirectory(), DataTransferItem.getAsFileSystemHandle() und FileSystemDirectoryHandle.getDirectoryHandle() angesprochen werden.
Instanz-Eigenschaften
Erbt Eigenschaften von seinem Elternteil, FileSystemHandle.
Instanz-Methoden
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 erfüllt wird, innerhalb des Verzeichnisses, auf dem die Methode aufgerufen wird. FileSystemDirectoryHandle.getFileHandle()-
Gibt ein
Promisezurück, das mit einemFileSystemFileHandlefür eine Datei mit dem angegebenen Namen erfüllt wird, innerhalb des Verzeichnisses, auf dem die Methode aufgerufen wird. FileSystemDirectoryHandle.removeEntry()-
Versucht asynchron einen Eintrag zu entfernen, falls das Verzeichnis-Handle eine Datei oder ein Verzeichnis mit dem angegebenen Namen enthält.
FileSystemDirectoryHandle.resolve()-
Gibt ein
Promisezurück, das mit einemArrayder Verzeichnisnamen vom übergeordneten Handle 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 async iterator der eigenen aufzählbaren
[key, value]Paare eines gegebenen Objekts zurück. FileSystemDirectoryHandle.keys()-
Gibt einen neuen async iterator zurück, der die Schlüssel für jedes Element im
FileSystemDirectoryHandleenthält. FileSystemDirectoryHandle.values()-
Gibt einen neuen async iterator zurück, der die Werte für jeden Index im
FileSystemDirectoryHandleObjekt enthält. FileSystemDirectoryHandle[Symbol.asyncIterator]()-
Gibt einen neuen async iterator der eigenen aufzählbaren
[key, value]Paare eines gegebenen Objekts 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 = 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 Verzeichnis-Handle 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 (relativePaths === 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
| Spezifikation |
|---|
| File System> # api-filesystemdirectoryhandle> |