Go:
ตรวจสอบว่ามีไดเร็กทอรีหรือไม่
วิธีการ:
ใน Go os
แพคเกจให้ฟังก์ชันการทำงานสำหรับการโต้ตอบกับระบบปฏิบัติการ รวมถึงการตรวจสอบว่ามีไดเรกทอรีหรือไม่ นี่คือวิธีที่คุณสามารถทำได้:
package main
import (
"fmt"
"os"
)
// isDirExists ตรวจสอบว่ามีไดเรกทอรีหรือไม่
func isDirExists(path string) bool {
info, err := os.Stat(path)
if os.IsNotExist(err) {
return false
}
return info.IsDir()
}
func main() {
dirPath := "/tmp/exampleDir"
if isDirExists(dirPath) {
fmt.Printf("มีไดเรกทอรี %s อยู่.\n", dirPath)
} else {
fmt.Printf("ไม่มีไดเรกทอรี %s อยู่.\n", dirPath)
}
}
ตัวอย่างผลลัพธ์:
มีไดเรกทอรี /tmp/exampleDir อยู่.
หรือ
ไม่มีไดเรกทอรี /tmp/exampleDir อยู่.
ขึ้นอยู่กับว่า /tmp/exampleDir
มีอยู่หรือไม่
ศึกษาเพิ่มเติม
ฟังก์ชัน os.Stat
จะคืนค่า FileInfo
อินเทอร์เฟสและข้อผิดพลาด หากข้อผิดพลาดเป็นชนิด os.ErrNotExist
, นั้นหมายความว่าไดเรกทอรีไม่มีอยู่จริง หากไม่มีข้อผิดพลาด เราจะตรวจสอบต่อไปว่าเส้นทางนั้นอ้างอิงถึงไดเรกทอรีจริงๆ ผ่านเมธอด IsDir()
จากอินเทอร์เฟส FileInfo
วิธีการนี้โดดเด่นเนื่องจากความเรียบง่ายและประสิทธิภาพ แต่สำคัญที่จะต้องทราบว่า, การตรวจสอบความมีอยู่ของไดเรกทอรีก่อนดำเนินการเช่น การสร้างหรือเขียนอาจนำไปสู่สภาวะแข่งขันในสภาพแวดล้อมที่ทำงานพร้อมกัน เพื่อหลายสถานการณ์ โดยเฉพาะในแอปพลิเคชันที่ทำงานพร้อมกัน อาจปลอดภัยกว่าที่จะพยายามดำเนินการ (เช่น, การสร้างไฟล์) และจัดการข้อผิดพลาดหลังจากนั้น แทนที่จะตรวจสอบก่อน
ทางประวัติศาสตร์, วิธีการนี้เป็นที่นิยมในการเขียนโปรแกรมเนื่องจากตรรกะที่ตรงไปตรงมา อย่างไรก็ตาม การพัฒนาของการคอมพิวต์แบบมัลติเธรดและพร้อมกันจำเป็นต้องเปลี่ยนไปใช้การจัดการข้อผิดพลาดที่เข้มแข็งกว่า และหลีกเลี่ยงการตรวจสอบเงื่อนไขก่อนการดำเนินการหากเป็นไปได้ นี้ไม่ได้ลดความสำคัญของการใช้งานสำหรับแอปพลิเคชันหรือสคริปต์เดี่ยวๆ ที่มีปัญหาน้อยกว่าในเรื่องนี้