ฉันต้องการตรวจสอบการมีอยู่ของไฟล์./conf/app.ini
ในรหัส Go ของฉัน แต่ฉันไม่สามารถหาวิธีที่ดีในการทำเช่นนั้น
ฉันรู้ว่ามีวิธีการของไฟล์ใน Java: public boolean exists()
ซึ่งผลตอบแทนจริงถ้าไฟล์หรือไดเรกทอรีที่มีอยู่
แต่สิ่งนี้สามารถทำได้ในโก
ฉันต้องการตรวจสอบการมีอยู่ของไฟล์./conf/app.ini
ในรหัส Go ของฉัน แต่ฉันไม่สามารถหาวิธีที่ดีในการทำเช่นนั้น
ฉันรู้ว่ามีวิธีการของไฟล์ใน Java: public boolean exists()
ซึ่งผลตอบแทนจริงถ้าไฟล์หรือไดเรกทอรีที่มีอยู่
แต่สิ่งนี้สามารถทำได้ในโก
คำตอบ:
// exists returns whether the given file or directory exists
func exists(path string) (bool, error) {
_, err := os.Stat(path)
if err == nil { return true, nil }
if os.IsNotExist(err) { return false, nil }
return false, err
}
แก้ไขเพื่อเพิ่มการจัดการข้อผิดพลาด
panic
สำหรับ "ข้อยกเว้น" จริงเช่นเดียวกับวัตถุ คุณสามารถ "จับ" recover
ด้วยการเรียกร้องให้ การคืนค่าอย่างชัดเจนerr
ว่าเป็นค่าที่สองเป็นเทคนิคธรรมดาที่ใช้สำนวนง่ายที่สุด ดู: golang.org/doc/effective_go.html#errors
if _, err := os.Stat("./conf/app.ini"); err == nil { /*exists*/ } else { /*not exists or some other error*/ }
คุณสามารถใช้สิ่งนี้:
if _, err := os.Stat("./conf/app.ini"); err != nil {
if os.IsNotExist(err) {
// file does not exist
} else {
// other error
}
}
มากกว่า FYI เนื่องจากฉันมองไปรอบ ๆ ไม่กี่นาทีคิดว่าคำถามของฉันจะค้นหาได้อย่างรวดเร็ว
จะตรวจสอบว่า path แสดงถึงไดเร็กตอรี่ที่มีอยู่ใน Go ได้อย่างไร?
นี่คือคำตอบที่ได้รับความนิยมสูงสุดในผลการค้นหาของฉัน แต่ที่นี่และที่อื่น ๆ โซลูชันให้การตรวจสอบการมีอยู่เท่านั้น ในการตรวจสอบว่าpath
เป็นไดเรกทอรีที่มีอยู่หรือไม่ฉันพบว่าฉันทำได้ง่าย ๆ :
path := GetSomePath();
if stat, err := os.Stat(path); err == nil && stat.IsDir() {
// path is a directory
}
ส่วนหนึ่งของปัญหาของฉันคือฉันคาดว่าpath/filepath
แพคเกจจะมีฟังก์ชั่น isDir ()
วิธีง่ายๆในการตรวจสอบว่ามีไฟล์อยู่หรือไม่:
if _, err := os.Stat("/path/to/whatever"); os.IsNotExist(err) {
// path/to/whatever does not exist
}
if _, err := os.Stat("/path/to/whatever"); err == nil {
// path/to/whatever exists
}
แหล่งที่มา:
มีวิธีง่าย ๆ ในการตรวจสอบว่าไฟล์ของคุณมีอยู่หรือไม่:
if _, err := os.Stat("./conf/app.ini"); err != nil {
if os.IsNotExist(err) {
..... //Shows error if file not exists
} else {
..... // Shows success message like file is there
}
}
f, err := os.Open(name)
หรือf, err := os.OpenFile(name,os.O_CREATE|os.O_EXCL, mode)
แล้วตรวจสอบos.IsNotExist(err)
)