Sepertinya saya tidak dapat memperoleh hasil pencarian yang menjelaskan cara melakukan ini.
Yang ingin saya lakukan adalah mengetahui apakah path yang diberikan adalah file atau direktori (folder).
fs.lstatSync(path_string).isDirectory()
harus memberitahumu. Dari dokumen :
Objek yang dikembalikan dari fs.stat () dan fs.lstat () adalah dari jenis ini.
stats.isFile() stats.isDirectory() stats.isBlockDevice() stats.isCharacterDevice() stats.isSymbolicLink() (only valid with fs.lstat()) stats.isFIFO() stats.isSocket()
The atas solusi akan throw
sebuah Error
jika; misalnya, file
atau directory
tidak ada.
Jika Anda menginginkan true
atau false
mendekati, cobalah fs.existsSync(dirPath) && fs.lstatSync(dirPath).isDirectory();
seperti yang disebutkan oleh Joseph dalam komentar di bawah.
let isDirExists = fs.existsSync(dirPath) && fs.lstatSync(dirPath).isDirectory();
Pembaruan: Node.Js> = 10
Kita dapat menggunakan API fs.promises baru
Versi Node.Js apa pun
Inilah cara Anda akan mendeteksi jika jalur adalah file atau direktori secara tidak sinkron , yang merupakan pendekatan yang disarankan dalam simpul. menggunakan fs.lstat
Catatan saat menggunakan API sinkron:
sumber
Serius, pertanyaan ada lima tahun dan tidak ada fasad yang bagus?
sumber
Tergantung pada kebutuhan Anda, Anda mungkin dapat mengandalkan node
path
modul .Anda mungkin tidak dapat menekan sistem file (misalnya file belum dibuat) dan tbh Anda mungkin ingin menghindari memukul sistem file kecuali Anda benar-benar membutuhkan validasi tambahan. Jika Anda dapat membuat asumsi bahwa apa yang Anda periksa mengikuti
.<extname>
format, lihat saja namanya.Tentunya jika Anda mencari file tanpa nama samaran Anda harus menekan sistem file untuk memastikan. Tetapi tetap sederhana sampai Anda perlu lebih rumit.
sumber
Jawaban di atas memeriksa apakah sistem file berisi jalur yang merupakan file atau direktori. Tapi itu tidak mengidentifikasi apakah jalur yang diberikan sendiri adalah file atau direktori.
Seperti jalur direktori atau file yang belum ditulis. Atau jalur dari komputer yang berbeda. Atau jalur tempat file dan direktori dengan nama yang sama ada.
Versi simpul: v11.10.0 - Feb 2019
sumber
Inilah fungsi yang saya gunakan. Tidak ada yang memanfaatkan
promisify
danawait/async
fitur dalam posting ini jadi saya pikir saya akan berbagi.Catatan: Saya tidak menggunakan
require('fs').promises;
karena sudah eksperimental selama satu tahun sekarang, lebih baik jangan mengandalkannya.sumber