Si une API pouvait récupérer le nom de 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, fullpath.replace(/.+\//, '')
mais je veux savoir s'il existe une manière plus «formelle», comme file.getName()
en Java, de le faire.
NodeJS obtenir le nom de fichier à partir du chemin absolu?
path.basename(fpath, path.extname(fpath))
Pour obtenir la partie nom de fichier du nom de fichier, la méthode de nom de base est utilisée:
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 de nom de base en disant à Node de renvoyer uniquement le nom sans l'extension:
la source
Pour ceux qui souhaitent supprimer l'extension du nom de fichier, vous pouvez utiliser https://nodejs.org/api/path.html#path_path_basename_path_ext
la source
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 l'indique l'exemple de votre question, vous pouvez rester simple et diviser la chaîne par séparateur:Ce serait plus rapide (et plus propre imo) que de le remplacer par une expression régulière.
Encore une fois: ne faites cela que si vous écrivez pour un environnement spécifique, sinon utilisez le
path
module, car les chemins sont étonnamment complexes. Windows, par exemple, prend/
en charge dans de nombreux cas, mais pas pour, par exemple, les\\?\?
préfixes de style utilisés pour les dossiers réseau partagés et similaires. Sous Windows, la méthode ci-dessus est vouée à l'échec, tôt ou tard.la source
Vous donne le nom du fichier sans extension, si vous avez besoin du nom avec extension
la source
Dans NodeJS, __filename.split (/ \ | //). Pop () renvoie uniquement le nom de fichier du chemin de fichier absolu sur n'importe quelle plate-forme de système d'exploitation. Pourquoi avoir besoin de se soucier de se souvenir / d'importer une API alors que cette approche regex nous permet également de nous souvenir de nos compétences regex.
la source
Nodejs est donc livré avec la variable globale par défaut appelée
'__fileName'
qui contient le fichier en cours d'exécution. Mon conseil est de passer le __fileName à un service à partir de n'importe quel fichier, afin que la récupération du fileName soit rendue dynamiqueCi-dessous, j'utilise la chaîne fileName, puis je la divise en fonction de la
path.sep
. Remarque path.sep évite les problèmes avec les séparateurs de fichiers posix et les séparateurs de fichiers Windows (problèmes avec '/' et '\'). C'est beaucoup plus propre. Obtenir la sous-chaîne et obtenir uniquement le dernier nom séparé et le soustraire avec la longueur actulale par 3 parle de lui-même.Vous pouvez écrire un service comme celui-ci (notez que c'est en dactylographie, mais vous pouvez très bien l'écrire en js)
la source