จะตรวจสอบเส้นทางที่ระบุว่าเป็นไฟล์หรือไดเร็กทอรีใน Node.js ได้อย่างไร

Ca Trwc Sxb Sen Thang Thi Rabu Wa Pen Fil Hrux Direkthxri Ni Node Js Di Xyangri



การตรวจจับเอนทิตีไฟล์มีความสำคัญโดยเฉพาะอย่างยิ่งเมื่อแอปพลิเคชันของคุณจัดการกับการจัดการไฟล์หรือจัดเก็บข้อมูลผู้ใช้ในไดเร็กทอรีเฉพาะ เนื่องจากไดเร็กทอรีเดียวสามารถเก็บไฟล์ได้หลายไฟล์ การดำเนินการที่อาจนำไปใช้กับไดเร็กทอรีนั้นเกี่ยวข้องกับการย้ายไฟล์ไปยังไดเร็กทอรีอื่นหรือการลบไฟล์ที่อยู่ทั้งหมด

เช่นเดียวกับไฟล์ การดำเนินการอาจรวมถึงการแก้ไขไฟล์ การแทรกข้อมูลในไฟล์ หรือการลบไฟล์เดียว แอปพลิเคชันทั้งหมดจะเกิดความสับสนหากนักพัฒนาใช้การดำเนินการกับไฟล์บนไดเร็กทอรีหรือในทางกลับกัน

บทความนี้จะอธิบายวิธีการตรวจสอบว่าเส้นทางที่ระบุเป็นไฟล์หรือไดเร็กทอรีโดยครอบคลุมวิธีการเหล่านี้:







จะตรวจสอบเส้นทางที่ระบุว่าเป็นไฟล์หรือไดเร็กทอรีใน Node.js ได้อย่างไร

มีสองวิธีที่ให้ไว้โดย “ FS ” โมดูลคือ “ เป็นไดเรกทอรี() ' และ ' isFile() ” ซึ่งมีวัตถุประสงค์เพียงอย่างเดียวในการตรวจสอบว่าเส้นทางที่ให้มานั้นนำไปสู่ไฟล์หรือไดเร็กทอรีหรือไม่ วิธีการเหล่านี้ใช้ทั้งในสถานการณ์ซิงโครนัสและอะซิงโครนัสโดยใช้คำสั่ง “ สถิติซิงค์() ' และ ' สถิติ() ” วิธีการ ทั้งสองวิธีนี้แสดงไว้ด้านล่างเพื่อตรวจสอบว่าเส้นทางที่ให้มานำไปสู่ไฟล์หรือไดเร็กทอรีหรือไม่



วิธีที่ 1: วิธีการ “statSync()” เพื่อตรวจจับเส้นทางที่นำไปสู่ไดเร็กทอรีหรือไฟล์

สถิติซิงค์() ” วิธีการจัดทำโดย “ FS ' โมดูล โดยทั่วไปจะใช้เพื่อดำเนินการแบบซิงโครนัส ในกรณีของเราวิธีนี้ จะจัดเก็บอินสแตนซ์ของเส้นทางที่ให้ไว้เพียงครั้งเดียว จากนั้นจะกำหนดให้ “ เป็นไดเรกทอรี() ' และ ' isFile() ” วิธีการส่งคืนว่าเส้นทางที่ระบุนำไปสู่ไดเร็กทอรีหรือไฟล์หรือไม่



มาดูข้อมูลโค้ดด้านล่างนี้เพื่อการใช้งานจริงของเมธอด “statSync()”:





ค่าคงที่ fsObj = จำเป็นต้อง ( 'เอฟเอส' ) ;

ให้ pathFile = fsObj. สถิติซิงค์ ( '/Users/kahou/Documents/readlineProj/mcu.db' ) ;

คอนโซล บันทึก ( 'มี Path Leads ไปยังไฟล์หรือไม่? ' + เส้นทางไฟล์. isFile ( ) ) ;

เส้นทางผบ = fsObj. สถิติซิงค์ ( '/Users/kahou/Documents/readlineProj' ) ;

คอนโซล บันทึก ( 'มี Path Leads ไปยังไดเร็กทอรีหรือไม่? ' + เส้นทางผบ. เป็นไดเรกทอรี ( ) ) ;

คำอธิบายสำหรับโค้ดที่ให้มาข้างต้นระบุไว้ด้านล่าง:

  • ขั้นแรก นำเข้า ' FS ” โมดูลและจัดเก็บอินสแตนซ์ไว้ใน “ fsObj ' ตัวแปร.
  • จากนั้นให้เรียกใช้ ' สถิติซิงค์() ” วิธีการใช้ “ fsObj ” และส่งผ่านเส้นทางที่เลือกภายในวงเล็บ เก็บการอ้างอิงของเส้นทางนี้ไว้ใน “ เส้นทางไฟล์ ' ตัวแปร.
  • ถัดไป กำหนด ' isFile() ” วิธีการที่มี “ เส้นทางไฟล์ ” เพื่อส่งคืนค่าบูลีนซึ่งจะแสดงว่าเส้นทางที่ระบุนำไปสู่ไฟล์หรือไม่
  • หลังจากนั้นให้เรียกใช้ ' สถิติซิงค์() ” วิธีการและผ่านเส้นทางใหม่
  • สุดท้ายแนบ “ เป็นไดเรกทอรี() ” วิธีการที่มีค่าส่งคืนโดย “ เริ่มซิงค์() ' วิธี.

ตอนนี้รันไฟล์ปัจจุบันโดยใช้คำสั่งด้านล่าง:



'โหนด <ชื่อไฟล์>'

ตัวอย่างเช่น เราได้ดำเนินการกับไฟล์ “app.js”:

ผลลัพธ์จะแสดงค่าของ “ จริง ” ถูกส่งคืนหมายความว่าเส้นทางที่ให้ไว้เป็นเส้นทางสำหรับโฟลเดอร์และตรวจพบไฟล์แล้ว

วิธีที่ 2: วิธีการ 'stat()' เพื่อตรวจหาเส้นทางที่นำไปสู่ไดเร็กทอรีหรือไฟล์

อีกวิธีหนึ่งที่ทำงานได้อย่างสมบูรณ์แบบสำหรับสภาพแวดล้อมแบบอะซิงโครนัสเรียกว่า “ สถิติ() ” วิธีการซึ่งจัดทำโดย “ FS ' โมดูล. ก็ยังใช้เหมือนเดิม” isFile() ' และ ' เป็นไดเรกทอรี() ” แต่เนื่องจากลักษณะอะซิงโครนัส ทำให้สามารถส่งผ่านเส้นทางเดียวไปยังทั้งสองวิธีได้ มันมีพารามิเตอร์สองตัว โดยตัวแรกคือเส้นทางร้านค้า และตัวที่สองคือฟังก์ชันการโทรกลับที่ดำเนินการบางอย่างบนเส้นทางที่ให้มา:

ค่าคงที่ fsObj = จำเป็นต้อง ( 'เอฟเอส' ) ,
เส้นทางทดสอบ = '/Users/kahou/Documents/readlineProj'

// ใช้วิธี stat()
fsObj. สถิติ ( เส้นทางทดสอบ , ( ข้อผิดพลาด , statObj ) => {
ถ้า ( ! ข้อผิดพลาด ) {
ถ้า ( statObj. isFile ( ) ) {
คอนโซล บันทึก ( ' \n ใช่! เส้นทางที่ให้ไว้นำไปสู่ไฟล์ ? ' ) ;
}
อื่น ถ้า ( statObj. เป็นไดเรกทอรี ( ) ) {
คอนโซล บันทึก ( ' \n ใช่! เส้นทางที่ให้ไว้นำไปสู่ไดเรกทอรี ? ' ) ;
}
}
อื่น
โยน ข้อผิดพลาด ;
} ) ;

คำอธิบายสำหรับโค้ดที่ให้มาข้างต้นแสดงอยู่ด้านล่าง:

  • ขั้นแรก นำเข้า ' FS ” โมดูลและจัดเก็บอินสแตนซ์ไว้ใน “ fsObj ' ตัวแปร. สร้าง “ เส้นทางทดสอบ ” ตัวแปรที่เก็บเส้นทางที่ผู้ทดสอบระบุไว้
  • ตอนนี้เรียกใช้ ' สถิติ() ” วิธีการและผ่าน “ เส้นทางทดสอบ ” เป็นพารามิเตอร์ตัวแรกและฟังก์ชันเรียกกลับเป็นพารามิเตอร์ตัวที่สอง
  • ฟังก์ชั่นการโทรกลับประกอบด้วย “ ข้อผิดพลาด ” เป็นพารามิเตอร์แรกและ “ statObj ” เช่นเดียวกับคนที่สอง “ ข้อผิดพลาด ” มีข้อผิดพลาดที่เกิดขึ้นระหว่างการดำเนินการและ “startObj” มีเส้นทางที่ให้ไว้
  • ภายในฟังก์ชันให้ใช้เครื่องหมาย “ ถ้า ” คำสั่งที่ทำงานหากไม่พบข้อผิดพลาด
  • ซ้อนกันถ้า ” ใช้เพื่อกำหนด “ isFile() ' และ ' เป็นไดเรกทอรี() ” วิธีการด้วย “ statObj '.
  • หากวิธีการกลับมา “ จริง ” จากนั้นส่วนนั้นจะถูกดำเนินการและแสดงข้อความแสดงความสำเร็จตามลำดับ

หลังจากรันสคริปต์ข้างต้นแล้ว เทอร์มินัลจะปรากฏดังนี้:

ดังที่คุณเห็นว่าตรวจพบเส้นทางที่ให้ไว้แล้วและยืนยันว่าเส้นทางที่ให้มานั้นนำไปสู่ไดเร็กทอรี

บทสรุป

ในการตรวจสอบว่าเส้นทางที่ระบุนั้นเป็นเส้นทางของไดเร็กทอรีหรือไฟล์ใน NodeJs หรือไม่ วิธีการของ “ isFile() ' และ ' เป็นไดเรกทอรี ” ถูกนำมาใช้ เส้นทางที่สามารถเข้าถึงได้โดยวิธีการเหล่านี้มีให้โดย “ สถิติซิงค์() ' และ ' สถิติ() ” วิธีการของ “ FS โมดูล NodeJs วิธีการเหล่านี้จัดเก็บเส้นทางที่ให้ไว้ในลักษณะซิงโครนัสและอะซิงโครนัสตามลำดับ บล็อกนี้ได้อธิบายขั้นตอนการตรวจสอบว่าเส้นทางที่ให้มานำไปสู่ไฟล์หรือไดเร็กทอรีใน NodeJS หรือไม่