Start · Sprachen · JavaScript · Referenz · FileSystemEntry.name

FileSystemEntry.name

Eigenschaft

Schreibgeschützter String mit dem Namen des Eintrags innerhalb seines übergeordneten Verzeichnisses – also die letzte Komponente des Pfads.

seit JavaScript Baseline: alle modernen Browser (File and Director Kategorie: webapi

Signatur

FileSystemEntry.name

Beschreibung

Die schreibgeschützte Eigenschaft name der Schnittstelle FileSystemEntry liefert den Namen einer Datei oder eines Verzeichnisses als String. Das ist nur die letzte Pfadkomponente, etwa "foto.jpg" oder "Urlaub". Den vollständigen Pfad innerhalb des virtuellen Dateisystems liefert fullPath, z. B. "/Urlaub/foto.jpg".

In der Praxis kommen FileSystemEntry-Objekte meist über Drag-and-drop in den Code, nämlich über DataTransferItem.webkitGetAsEntry(), oder über HTMLInputElement.webkitEntries bei einem <input type="file" webkitdirectory>. Mit name kann man Einträge anzeigen, nach Dateiendung filtern oder versteckte Dateien wie .DS_Store überspringen.

Da FileSystemFileEntry und FileSystemDirectoryEntry von FileSystemEntry erben, haben beide diese Eigenschaft. Ob es sich um eine Datei oder ein Verzeichnis handelt, zeigen isFile und isDirectory.

Rückgabewert

Typ
string
Beschreibung
Der Name des Eintrags ohne übergeordnete Pfadbestandteile. Beim Wurzelverzeichnis eines Dateisystems kann der String leer sein.

Beispiele

Namen abgelegter Dateien und Ordner ausgeben

const dropZone = document.querySelector('#drop-zone');

dropZone.addEventListener('dragover', (e) => e.preventDefault());

dropZone.addEventListener('drop', (e) => {
  e.preventDefault();
  for (const item of e.dataTransfer.items) {
    const entry = item.webkitGetAsEntry();
    if (!entry) continue;
    const art = entry.isDirectory ? 'Ordner' : 'Datei';
    console.log(`${art}: ${entry.name} (${entry.fullPath})`);
  }
});
Ordner: Urlaub (/Urlaub) Datei: notizen.txt (/notizen.txt)

Verzeichnis rekursiv durchlaufen und nach Endung filtern

const readAll = (dirEntry) => new Promise((resolve, reject) => {
  const reader = dirEntry.createReader();
  const result = [];
  const next = () => reader.readEntries((batch) => {
    if (batch.length === 0) return resolve(result);
    result.push(...batch);
    next(); // readEntries liefert Ergebnisse in Portionen
  }, reject);
  next();
});

const collectImages = async (entry, images = []) => {
  if (entry.name.startsWith('.')) return images; // versteckte Dateien überspringen
  if (entry.isFile && /\.(jpe?g|png|webp)$/i.test(entry.name)) {
    images.push(entry.fullPath);
  } else if (entry.isDirectory) {
    for (const child of await readAll(entry)) {
      await collectImages(child, images);
    }
  }
  return images;
};

// Nutzung im drop-Handler:
// const entry = e.dataTransfer.items[0].webkitGetAsEntry();
// console.log(await collectImages(entry));
["/Urlaub/strand.jpg", "/Urlaub/Tag2/berg.png"]

Einträge aus einem Ordner-Input anzeigen

// <input type="file" id="picker" webkitdirectory multiple>
const picker = document.querySelector('#picker');

picker.addEventListener('change', () => {
  const names = picker.webkitEntries.map((entry) => entry.name);
  console.log(names.length ? names : 'webkitEntries ist hier leer – files verwenden');
  // Zuverlässiger Fallback: File.name und webkitRelativePath
  for (const file of picker.files) {
    console.log(file.name, file.webkitRelativePath);
  }
});
strand.jpg Urlaub/strand.jpg

// Wichtig · Fallstricke

  • Schreibgeschützt: Eine Zuweisung an entry.name wird ignoriert bzw. wirft im Strict Mode einen TypeError. Umbenennen ist über diese API im Browser nicht möglich.
  • name ist kein Pfad. Für eindeutige Schlüssel fullPath verwenden, denn gleiche Namen können in verschiedenen Unterordnern vorkommen.
  • Die Groß- und Kleinschreibung bleibt so, wie sie im Betriebssystem vorliegt. Beim Filtern nach Endungen daher ohne Beachtung der Schreibweise vergleichen (Flag /i).
  • Die File and Directory Entries API ist in Chrome, Edge, Firefox und Safari verfügbar, aber kein offizieller W3C-Standard. Viele Einstiegspunkte tragen das Präfix webkit, etwa webkitGetAsEntry(). Für neuen Code, der Dateien lesen und schreiben soll, ist die File System Access API (FileSystemHandle.name) oft besser geeignet, die es jedoch nur in Chromium-Browsern vollständig gibt.
  • webkitGetAsEntry() muss synchron im drop-Handler aufgerufen werden. Nach dem Event ist dataTransfer leer.