456 Stimmen

Holen Sie sich den Dateinamen aus dem absoluten Pfad in Node.js?

Wie kann ich den Dateinamen aus einem absoluten Pfad in Nodejs erhalten?

z. B. "foo.txt" von "/var/www/foo.txt"

Ich weiß, dass es mit einer Zeichenkettenoperation funktioniert, wie fullpath.replace(/.+\\//, ''), aber ich möchte wissen, ob es einen expliziten Weg gibt, wie file.getName() in Java?

813voto

Victor Stanciu Punkte 11088

Verwenden Sie die basename-Methode des path-Moduls:

path.basename('/foo/bar/baz/asdf/quux.html')
// gibt zurück
'quux.html'

Hier finden Sie die Dokumentation zum obigen Beispiel.

74voto

Rubin bhandari Punkte 1629

Um den Dateinamen-Teil des Dateinamens zu erhalten, wird die Methode basename verwendet:

var path = require("path");
var fileName = "C:\\Python27\\ArcGIS10.2\\python.exe";
var file = path.basename(fileName);

console.log(file); // 'python.exe'

Wenn Sie den Dateinamen ohne Erweiterung haben möchten, können Sie die Erweiterungsvariable (die den Erweiterungsnamen enthält) an die basename-Methode übergeben und Node mitteilen, nur den Namen ohne Erweiterung zurückzugeben:

var path = require("path");
var fileName = "C:\\Python27\\ArcGIS10.2\\python.exe";
var extension = path.extname(fileName);
var file = path.basename(fileName,extension);

console.log(file); // 'python'

42voto

Kevin Muchwat Punkte 1109
var path = require("path");

var filepath = "C:\\Python27\\ArcGIS10.2\\python.exe";

var name = path.parse(filepath).name;
console.log(name); //python

var base = path.parse(filepath).base;
console.log(base); //python.exe

var ext = path.parse(filepath).ext;
console.log(ext); //.exe

16voto

Tigertron Punkte 579

Für diejenigen, die daran interessiert sind, die Erweiterung aus dem Dateinamen zu entfernen, können Sie https://nodejs.org/api/path.html#path_path_basename_path_ext verwenden

path.basename('/foo/bar/baz/asdf/quux.html', '.html');

4voto

leo Punkte 7558

Wenn Sie bereits wissen, dass der Pfadtrenner / ist (d.h. Sie für eine spezifische Plattform / Umgebung schreiben), wie im Beispiel in Ihrer Frage angedeutet, könnten Sie es einfach halten und den String nach dem Trennzeichen aufteilen:

'/foo/bar/baz/asdf/quux.html'.split('/').pop()

Das wäre schneller (und sauberer meiner Meinung nach), als durch regulären Ausdruck zu ersetzen.

Nochmal: Tun Sie das nur, wenn Sie für eine spezifische Umgebung schreiben, nutzen Sie andernfalls das path Modul, da Pfade überraschend komplex sind. Windows unterstützt beispielsweise in vielen Fällen /, aber nicht bei z.B. Präfixen im Stil von \\?\?, die für freigegebene Netzwerkordner und Ähnliches verwendet werden. Auf Windows ist die obige Methode zum Scheitern verurteilt, früher oder später.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X