pathutils.go 985 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package pathutils
  2. import (
  3. "io"
  4. "os"
  5. "path/filepath"
  6. "strings"
  7. )
  8. func GetCurrentDirectory() (string, error) {
  9. dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
  10. return strings.Replace(dir, "\\", "/", -1), err
  11. }
  12. func PathExists(path string) (bool, error) {
  13. _, err := os.Stat(path)
  14. if err == nil {
  15. return true, nil
  16. }
  17. if os.IsNotExist(err) {
  18. return false, nil
  19. }
  20. return false, err
  21. }
  22. func CopyFile(dstName, srcName string) (written int64, err error) {
  23. src, err := os.Open(srcName)
  24. if err != nil {
  25. return 0, err
  26. }
  27. fi, err := os.Stat(srcName)
  28. if err != nil {
  29. return 0, err
  30. }
  31. perm := fi.Mode()
  32. defer src.Close()
  33. dst, err := os.OpenFile(dstName, os.O_WRONLY|os.O_CREATE, perm)
  34. if err != nil {
  35. return 0, err
  36. }
  37. defer dst.Close()
  38. return io.Copy(dst, src)
  39. }
  40. func MkDirIfNotExist(path string, perm os.FileMode) error {
  41. if r, err := PathExists(path); (!r) || (err != nil) {
  42. if err := os.MkdirAll(path, perm); err != nil {
  43. return err
  44. }
  45. }
  46. return nil
  47. }