dir.go 606 B

1234567891011121314151617181920212223242526272829303132
  1. package fs
  2. import (
  3. "errors"
  4. "os"
  5. )
  6. // IsDir Tells whether the filename is a directory
  7. func IsDir(filename string) (bool, error) {
  8. fd, err := os.Stat(filename)
  9. if err != nil {
  10. return false, err
  11. }
  12. fm := fd.Mode()
  13. return fm.IsDir(), nil
  14. }
  15. // DirectoryOrCreate checking directory, is not exists will create
  16. func DirectoryOrCreate(dirname string) error {
  17. if fi, err := os.Stat(dirname); err != nil {
  18. if errors.Is(err, os.ErrNotExist) {
  19. return os.MkdirAll(dirname, 0755)
  20. } else {
  21. return err
  22. }
  23. } else {
  24. if fi.IsDir() {
  25. return nil
  26. }
  27. return errors.New("file not directory")
  28. }
  29. }