Jika ada API dapat mengambil nama file dari jalur file absolut?
misalnya "foo.txt"
dari"/var/www/foo.txt"
Saya tahu ini bekerja dengan operasi string, seperti fullpath.replace(/.+\//, '')
tetapi saya ingin tahu apakah ada cara yang lebih 'formal', seperti file.getName()
di java, bisa melakukannya.
NodeJS mendapatkan nama file dari path absolut?
path.basename(fpath, path.extname(fpath))
Untuk mendapatkan bagian nama file dari nama file, metode basename digunakan:
Jika Anda ingin nama file tanpa ekstensi, Anda bisa meneruskan variabel ekstensi (berisi nama ekstensi) ke metode nama dasar yang memberitahu Node untuk hanya mengembalikan nama tanpa ekstensi:
sumber
Bagi mereka yang tertarik untuk menghapus ekstensi dari nama file, Anda dapat menggunakan https://nodejs.org/api/path.html#path_path_basename_path_ext
sumber
Jika Anda sudah tahu bahwa pemisah path adalah
/
(yaitu Anda menulis untuk platform / lingkungan tertentu), seperti tersirat pada contoh dalam pertanyaan Anda, Anda bisa membuatnya tetap sederhana dan memecah string dengan pemisah:Itu akan lebih cepat (dan imo bersih) daripada mengganti dengan ekspresi reguler.
Sekali lagi: Hanya lakukan ini jika Anda menulis untuk lingkungan tertentu, jika tidak gunakan
path
modul, karena jalur sangat kompleks. Windows, misalnya, mendukung/
dalam banyak kasus tetapi tidak untuk misalnya\\?\?
awalan gaya yang digunakan untuk folder jaringan bersama dan sejenisnya. Pada Windows metode di atas pasti gagal, cepat atau lambat.sumber
Memberi Anda nama file tanpa ekstensi, jika Anda perlu nama dengan penggunaan ekstensi
sumber
Di NodeJS, __filename.split (/ \ | //). Pop () mengembalikan hanya nama file dari jalur file absolut pada platform OS apa pun. Mengapa perlu peduli mengingat / mengimpor API sementara pendekatan regex ini juga memungkinkan kami mengingat kembali keterampilan regex kami.
sumber
Jadi Nodejs hadir dengan variabel global default yang disebut
'__fileName'
yang menyimpan file saat ini dieksekusi. Saran saya adalah meneruskan __fileName ke layanan dari file apa pun, sehingga pengambilan fileName menjadi dinamisDi bawah, saya menggunakan string fileName dan kemudian membaginya berdasarkan
path.sep
. Catatan path.sep menghindari masalah dengan pemisah file posix dan pemisah file windows (masalah dengan '/' dan '\'). Jauh lebih bersih. Mendapatkan substring dan hanya mendapatkan nama yang terpisah terakhir dan menguranginya dengan panjang actulal sebanyak 3 berbicara untuk dirinya sendiri.Anda dapat menulis layanan seperti ini (Catatan ini dalam bentuk naskah, tetapi Anda dapat menuliskannya dalam js)
sumber