nodejs récupère le nom du fichier à partir du chemin absolu?

Si une API peut récupérer le nom du fichier à partir d'un chemin de fichier absolu?

Par exemple "foo.txt" de "/var/www/foo.txt"

Je sais que cela fonctionne avec une opération de chaîne, comme fullpath.replace(/.+//, '') mais je veux savoir s'il existe une manière plus "formelle", comme file.getName() en java, qui pourrait le faire.

NodeJS récupère le nom du fichier à partir du chemin absolu?

174
demandé sur Damjan Pavlica 2013-11-06 15:57:30

4 réponses

Utilisez la méthode basename du module path:

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

Ici est la documentation de l'exemple ci-dessus est prise.

343
répondu Victor Stanciu 2013-11-06 11:59:15

Pour obtenir la partie nom de fichier du nom de fichier, la méthode basename est utilisée:

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

Console.log(fichier); Si vous voulez le nom de fichier sans l'extension, vous pouvez passer la variable d'extension (contenant le nom de l'extension) à la méthode basename indiquant à Node de renvoyer uniquement le nom sans l'extension:

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);
6
répondu Rubin bhandari 2018-05-24 06:24:05

Si vous savez déjà que le séparateur de chemin est / (c'est-à-dire que vous écrivez pour une plate-forme/un environnement spécifique), comme le suggère l'exemple de votre question, vous pouvez rester simple et diviser la chaîne par séparateur:

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

Ce serait plus rapide (et plus propre imo) que de remplacer par une expression régulière.

0
répondu leo 2018-02-21 14:18:04

Pour ceux qui sont intéressés à supprimer l'extension du nom de fichier, vous pouvez utiliser https://nodejs.org/api/path.html#path_path_basename_path_ext

path.basename('/foo/bar/baz/asdf/quux.html', '.html');
0
répondu Tigertron 2018-07-11 17:58:25