¿Si hay alguna API que pueda recuperar el nombre del archivo de una ruta de archivo absoluta?
por ejemplo "foo.txt"
de"/var/www/foo.txt"
Sé que funciona con la operación de cadena, fullpath.replace(/.+\//, '')
pero quiero saber si hay una forma más 'formal', como file.getName()
en Java, podría hacerlo.
¿NodeJS obtiene el nombre del archivo de la ruta absoluta?
path.basename(fpath, path.extname(fpath))
Para obtener la parte del nombre del archivo, se usa el método basename:
Si desea el nombre del archivo sin la extensión, puede pasar la variable de extensión (que contiene el nombre de la extensión) al método de nombre base que le dice a Node que devuelva solo el nombre sin la extensión:
fuente
Para aquellos interesados en eliminar la extensión del nombre de archivo, pueden usar https://nodejs.org/api/path.html#path_path_basename_path_ext
fuente
Si ya sabe que el separador de ruta es
/
( es decir, está escribiendo para una plataforma / entorno específico), como lo implica el ejemplo en su pregunta, podría mantenerlo simple y dividir la cadena por separador:Eso sería más rápido (y más limpio) que reemplazarlo por una expresión regular.
Nuevamente: solo haga esto si está escribiendo para un entorno específico; de lo contrario, use el
path
módulo, ya que las rutas son sorprendentemente complejas. Windows, por ejemplo, admite/
en muchos casos, pero no para, por ejemplo, los\\?\?
prefijos de estilo utilizados para carpetas de red compartidas y similares. En Windows, el método anterior está condenado al fracaso, tarde o temprano.fuente
Le da el nombre del archivo sin extensión, si necesita el nombre con uso de extensión
fuente
En NodeJS, __filename.split (/ \ | //). Pop () devuelve solo el nombre del archivo desde la ruta absoluta del archivo en cualquier plataforma del sistema operativo. ¿Por qué debemos preocuparnos por recordar / importar una API mientras este enfoque de expresiones regulares también nos permite recordar nuestras habilidades de expresiones regulares?
fuente
Entonces, Nodejs viene con la variable global predeterminada llamada
'__fileName'
que contiene el archivo actual que se está ejecutando. Mi consejo es pasar el __fileName a un servicio desde cualquier archivo, para que la recuperación del fileName sea dinámicaA continuación, utilizo la cadena fileName y luego la divido en función de
path.sep
. Tenga en cuenta path.sep evita problemas con los separadores de archivos posix y los separadores de archivos de Windows (problemas con '/' y '\'). Es mucho mas limpio. Obtener la subcadena y obtener solo el último nombre separado y restarlo con la longitud actulal por 3 habla por sí mismo.Puede escribir un servicio como este (tenga en cuenta que esto está en mecanografiado, pero puede escribirlo en js)
fuente