ตรวจสอบว่ามีไดเร็กทอรีหรือไม่

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

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

ทางประวัติศาสตร์, วิธีการนี้เป็นที่นิยมในการเขียนโปรแกรมเนื่องจากตรรกะที่ตรงไปตรงมา อย่างไรก็ตาม การพัฒนาของการคอมพิวต์แบบมัลติเธรดและพร้อมกันจำเป็นต้องเปลี่ยนไปใช้การจัดการข้อผิดพลาดที่เข้มแข็งกว่า และหลีกเลี่ยงการตรวจสอบเงื่อนไขก่อนการดำเนินการหากเป็นไปได้ นี้ไม่ได้ลดความสำคัญของการใช้งานสำหรับแอปพลิเคชันหรือสคริปต์เดี่ยวๆ ที่มีปัญหาน้อยกว่าในเรื่องนี้