Jeśli jakiś interfejs API mógłby pobrać nazwę pliku z bezwzględnej ścieżki pliku?
np. "foo.txt"
z"/var/www/foo.txt"
Wiem, że działa z operacją na łańcuchach, fullpath.replace(/.+\//, '')
ale chcę wiedzieć, czy istnieje bardziej „formalny” sposób, jak file.getName()
w Javie, aby to zrobić.
NodeJS uzyskać nazwę pliku z bezwzględnej ścieżki?
path.basename(fpath, path.extname(fpath))
Aby uzyskać część nazwy pliku z nazwą pliku, używana jest metoda basename:
Jeśli chcesz nazwę pliku bez rozszerzenia, możesz przekazać zmienną rozszerzenia (zawierającą nazwę rozszerzenia) do metody basename, informując Node, aby zwrócił tylko nazwę bez rozszerzenia:
źródło
Dla osób zainteresowanych usunięciem rozszerzenia z nazwy pliku, możesz użyć https://nodejs.org/api/path.html#path_path_basename_path_ext
źródło
Jeśli już wiesz, że separatorem ścieżek jest
/
(tzn. Piszesz dla konkretnej platformy / środowiska), jak sugeruje przykład w twoim pytaniu, możesz to uprościć i podzielić ciąg według separatora:Byłoby to szybsze (i czystsze imo) niż zastąpienie wyrażeniem regularnym.
Ponownie: rób to tylko wtedy, gdy piszesz dla określonego środowiska, w przeciwnym razie skorzystaj z
path
modułu, ponieważ ścieżki są zaskakująco złożone. Na przykład system Windows obsługuje/
w wielu przypadkach, ale nie na przykład dla\\?\?
prefiksów stylów używanych dla udostępnionych folderów sieciowych i tym podobnych. W systemie Windows powyższa metoda jest skazana na niepowodzenie, prędzej czy później.źródło
Podaje nazwę pliku bez rozszerzenia, jeśli potrzebujesz nazwy z rozszerzeniem
źródło
W NodeJS nazwa_pliku.split (/ \ | //). Pop () zwraca tylko nazwę pliku z bezwzględnej ścieżki do pliku na dowolnej platformie systemu operacyjnego. Po co dbać o zapamiętywanie / importowanie API, podczas gdy to podejście do wyrażenia regularnego pozwala nam również przypomnieć sobie nasze umiejętności wyrażania regularnego.
źródło
Nodejs ma więc domyślną zmienną globalną o nazwie
'__fileName'
która wstrzymuje bieżący plik. Moja rada to przekazywanie __nazwa_pliku do usługi z dowolnego pliku, aby pobieranie nazwy pliku stało się dynamicznePoniżej wykorzystuję ciąg fileName, a następnie podzielę go na podstawie
path.sep
. Uwaga path.sep pozwala uniknąć problemów z separatorami plików POSIX i separatorami plików Windows (problemy z „/” i „\”). Jest o wiele czystszy. Pobieranie podciągów i uzyskiwanie tylko ostatniej oddzielnej nazwy i odejmowanie jej o długości rzeczywistej o 3 mówi samo za siebie.Możesz napisać taką usługę (uwaga: to maszynopis, ale bardzo dobrze możesz napisać w js)
źródło