Yanıtlar:
// 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
}
Hata işleme eklemek için düzenlendi.
panicgerçek bir "istisna" benzeri nesne için kullanır . Bir çağrı ile "yakalayabilirsiniz" recover. errBir ikinci dönüş değeri olarak açıkça döndürmek son derece yaygın, deyimsel bir Go tekniğidir. Bakınız: golang.org/doc/effective_go.html#errors
if _, err := os.Stat("./conf/app.ini"); err == nil { /*exists*/ } else { /*not exists or some other error*/ }
Bunu kullanabilirsiniz:
if _, err := os.Stat("./conf/app.ini"); err != nil {
if os.IsNotExist(err) {
// file does not exist
} else {
// other error
}
}
Bakınız: http://golang.org/pkg/os/#IsNotExist
Daha çok bilgi için, birkaç dakika etrafıma baktığımdan beri sorumun hızlı bir arama uzaklıkta olduğunu düşündüm.
Yolun Go'da var olan bir dizini temsil edip etmediği nasıl kontrol edilir?
Bu, arama sonuçlarımdaki en popüler cevaptı, ancak burada ve başka yerlerde çözümler yalnızca mevcudiyet kontrolü sağlar. pathMevcut bir dizini temsil edip etmediğini kontrol etmek için kolayca yapabileceğimi fark ettim:
path := GetSomePath();
if stat, err := os.Stat(path); err == nil && stat.IsDir() {
// path is a directory
}
path/filepathSorunumun bir kısmı, paketin isDir () işlevini içermesini beklememdi.
Dosyanın var olup olmadığını kontrol etmenin basit yolu:
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
}
Kaynaklar:
Dosyanızın var olup olmadığını kontrol etmenin basit bir yolu vardır:
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)veyaf, err := os.OpenFile(name,os.O_CREATE|os.O_EXCL, mode)sonra kontrol edinos.IsNotExist(err)).