Se alguma API puder recuperar o nome do arquivo de um caminho absoluto?
por exemplo, "foo.txt"
de"/var/www/foo.txt"
Eu sei que funciona com operação de string, como, fullpath.replace(/.+\//, '')
mas eu quero saber se existe uma maneira mais 'formal', como file.getName()
em java, poderia fazê-lo.
NodeJS obtém o nome do arquivo do caminho absoluto?
path.basename(fpath, path.extname(fpath))
Para obter a parte do nome do arquivo, o método basename é usado:
Se você desejar o nome do arquivo sem a extensão, poderá passar a variável da extensão (contendo o nome da extensão) para o método basename, dizendo ao Node para retornar apenas o nome sem a extensão:
fonte
Para aqueles interessados em remover a extensão do nome do arquivo, você pode usar https://nodejs.org/api/path.html#path_path_basename_path_ext
fonte
Se você já sabe que o separador de caminho é
/
(ou seja, você está escrevendo para uma plataforma / ambiente específico), como está implícito no exemplo da sua pergunta, você pode mantê-lo simples e dividir a string pelo separador:Isso seria mais rápido (e limpo) do que substituir pela expressão regular.
Novamente: Faça isso apenas se estiver escrevendo para um ambiente específico; caso contrário, use o
path
módulo, pois os caminhos são surpreendentemente complexos. O Windows, por exemplo, suporta/
em muitos casos, mas não, por exemplo, os\\?\?
prefixos de estilo usados para pastas de rede compartilhadas e similares. No Windows, o método acima está fadado ao fracasso, mais cedo ou mais tarde.fonte
Fornece o nome do arquivo sem extensão, se você precisar do nome com extensão, use
fonte
No NodeJS, __filename.split (/ \ | //). Pop () retorna apenas o nome do arquivo do caminho absoluto do arquivo em qualquer plataforma do sistema operacional. Por que precisamos nos preocupar em lembrar / importar uma API enquanto essa abordagem de regex também nos permite relembrar nossas habilidades em regex?
fonte
Portanto, o Nodejs vem com a variável global padrão chamada
'__fileName'
que mantém o arquivo atual sendo executado. Meu conselho é passar o __fileName para um serviço a partir de qualquer arquivo, para que a recuperação do fileName seja dinâmica.Abaixo, utilizo a string fileName e a divido com base no
path.sep
. Observe que path.sep evita problemas com os separadores de arquivos posix e Windows (se houver '/' e '\'). É muito mais limpo. Obter a substring e obter apenas o último nome separado e subtraí-lo com o comprimento atuarial por 3 fala por si.Você pode escrever um serviço como este (observe que está em texto datilografado, mas pode muito bem escrever em js)
fonte