เช่นเดียวกับไฟล์ การดำเนินการอาจรวมถึงการแก้ไขไฟล์ การแทรกข้อมูลในไฟล์ หรือการลบไฟล์เดียว แอปพลิเคชันทั้งหมดจะเกิดความสับสนหากนักพัฒนาใช้การดำเนินการกับไฟล์บนไดเร็กทอรีหรือในทางกลับกัน
บทความนี้จะอธิบายวิธีการตรวจสอบว่าเส้นทางที่ระบุเป็นไฟล์หรือไดเร็กทอรีโดยครอบคลุมวิธีการเหล่านี้:
- วิธีการ “statSync()” เพื่อตรวจจับเส้นทางที่นำไปสู่ไดเร็กทอรีหรือไฟล์
- วิธีการ “stat()” เพื่อตรวจจับเส้นทางที่นำไปสู่ไดเร็กทอรีหรือไฟล์
จะตรวจสอบเส้นทางที่ระบุว่าเป็นไฟล์หรือไดเร็กทอรีใน 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 หรือไม่