github.com/sandwich-go/boost@v1.3.29/xos/exists.go (about) 1 package xos 2 3 import ( 4 "errors" 5 "os" 6 ) 7 8 // ExistsTreatErrorAsExist Exists函数组获取是否存在时,如果发生了非os.ErrNotExist错误,视作存在或者不存在,减轻逻辑层判断负担 9 var ExistsTreatErrorAsExist = true 10 11 // Exists 指定的文件或者目录是否存在 12 // 如果发生了非 os.ErrNotExist 错误,则认为存在 13 func Exists(fileOrDirPath string) bool { 14 _, err := os.Stat(fileOrDirPath) 15 if err == nil { 16 return true 17 } 18 if errors.Is(err, os.ErrNotExist) { 19 return false 20 } 21 return ExistsTreatErrorAsExist 22 } 23 24 // ExistsFile 给定的 fileName 是否存在且是一个文件,如果 fileName 存在但是是一个目录也会返回 false 25 // 如果发生了非 os.ErrNotExist 错误,则认为存在 26 func ExistsFile(fileName string) bool { 27 info, err := os.Stat(fileName) 28 if os.IsNotExist(err) { 29 return false 30 } 31 if err != nil { 32 return ExistsTreatErrorAsExist 33 } 34 return !info.IsDir() 35 } 36 37 // ExistsDir 给定的 filePath 是否存在且是一个目录,如果 filePath 存在但是是一个文件也会返回错误 38 // 如果发生了非 os.ErrNotExist 错误,则认为存在 39 func ExistsDir(filePath string) bool { 40 info, err := os.Stat(filePath) 41 if os.IsNotExist(err) { 42 return false 43 } 44 if err != nil { 45 return ExistsTreatErrorAsExist 46 } 47 return info.IsDir() 48 }