github.com/dennys-bd/goals@v0.0.0-20210328114421-251a004d41e3/shortcuts/os/dir.go (about) 1 package os 2 3 import ( 4 "io" 5 "os" 6 7 errs "github.com/dennys-bd/goals/shortcuts/errors" 8 ) 9 10 // Exists verify is a file or dir exists 11 func Exists(path string) bool { 12 if path == "" { 13 return false 14 } 15 _, err := os.Stat(path) 16 if err == nil { 17 return true 18 } 19 if !os.IsNotExist(err) { 20 errs.Ex(err) 21 } 22 return false 23 } 24 25 // IsEmpty checks if a given path is empty. 26 // Hidden files in path are ignored. 27 func IsEmpty(path string) bool { 28 fi, err := os.Stat(path) 29 if err != nil { 30 errs.Ex(err) 31 } 32 33 if !fi.IsDir() { 34 return fi.Size() == 0 35 } 36 37 f, err := os.Open(path) 38 if err != nil { 39 errs.Ex(err) 40 } 41 defer f.Close() 42 43 names, err := f.Readdirnames(-1) 44 if err != nil && err != io.EOF { 45 errs.Ex(err) 46 } 47 48 for _, name := range names { 49 if len(name) > 0 && name[0] != '.' { 50 return false 51 } 52 } 53 return true 54 }