Wenn es eine API gibt, die den Dateinamen von einem absoluten Dateipfad abrufen kann?
zB "foo.txt"
aus"/var/www/foo.txt"
Ich weiß, dass es mit String-Operationen funktioniert, fullpath.replace(/.+\//, '')
aber ich möchte wissen , ob es einen "formaleren" Weg gibt, wie es file.getName()
in Java möglich ist.
NodeJS Dateinamen vom absoluten Pfad erhalten?
path.basename(fpath, path.extname(fpath))
Um den Dateinamen-Teil des Dateinamens abzurufen, wird die Basename-Methode verwendet:
Wenn Sie den Dateinamen ohne die Erweiterung möchten, können Sie die Erweiterungsvariable (die den Erweiterungsnamen enthält) an die Basisnamenmethode übergeben und Node anweisen, nur den Namen ohne die Erweiterung zurückzugeben:
quelle
Für diejenigen, die die Erweiterung aus dem Dateinamen entfernen möchten, können Sie https://nodejs.org/api/path.html#path_path_basename_path_ext verwenden
quelle
Wenn Sie bereits wissen, dass das Pfadtrennzeichen ist
/
(dh Sie schreiben für eine bestimmte Plattform / Umgebung), wie im Beispiel in Ihrer Frage impliziert, können Sie es einfach halten und die Zeichenfolge nach Trennzeichen aufteilen:Das wäre schneller (und sauberer imo) als durch regulären Ausdruck zu ersetzen.
Nochmals: Tun Sie dies nur, wenn Sie für eine bestimmte Umgebung schreiben, andernfalls verwenden Sie das
path
Modul, da die Pfade überraschend komplex sind. Windows unterstützt beispielsweise/
in vielen Fällen, jedoch nicht beispielsweise die\\?\?
für freigegebene Netzwerkordner und dergleichen verwendeten Stilpräfixe. Unter Windows ist die oben beschriebene Methode früher oder später zum Scheitern verurteilt.quelle
Gibt Ihnen den Namen der Datei ohne Erweiterung, wenn Sie den Namen mit Erweiterungsgebrauch benötigen
quelle
In NodeJS gibt __filename.split (/ \ | //). Pop () nur den Dateinamen aus dem absoluten Dateipfad auf jeder Betriebssystemplattform zurück. Warum sollten Sie sich um das Erinnern / Importieren einer API kümmern, während dieser Regex-Ansatz es uns auch ermöglicht, unsere Regex-Fähigkeiten zu sammeln?
quelle
Daher wird Nodejs mit der globalen Standardvariablen geliefert
'__fileName'
, die die aktuell ausgeführte Datei enthält. Mein Rat ist, den __fileName aus einer beliebigen Datei an einen Dienst zu übergeben, damit das Abrufen des Dateinamens dynamisch wirdIm Folgenden verwende ich die Dateinamenzeichenfolge und teile sie dann basierend auf der
path.sep
. Hinweis path.sep vermeidet Probleme mit Posix-Dateiseparatoren und Windows-Dateiseparatoren (Probleme mit '/' und '\'). Es ist viel sauberer. Es spricht für sich, den Teilstring zu erhalten und nur den letzten getrennten Namen zu erhalten und ihn mit der tatsächlichen Länge um 3 zu subtrahieren.Sie können einen Dienst wie diesen schreiben (Beachten Sie, dass dies in Typoskript ist, aber Sie können es sehr gut in js schreiben)
quelle