path.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package common
  2. import (
  3. "io/ioutil"
  4. "os"
  5. "os/user"
  6. "path"
  7. "strings"
  8. )
  9. func ExpandHomePath(p string) (path string) {
  10. path = p
  11. // Check in case of paths like "/something/~/something/"
  12. if len(path) > 1 && path[:2] == "~/" {
  13. usr, _ := user.Current()
  14. dir := usr.HomeDir
  15. path = strings.Replace(p, "~", dir, 1)
  16. }
  17. return
  18. }
  19. func FileExist(filePath string) bool {
  20. _, err := os.Stat(filePath)
  21. if err != nil && os.IsNotExist(err) {
  22. return false
  23. }
  24. return true
  25. }
  26. func ReadAllFile(filePath string) (string, error) {
  27. file, err := os.Open(filePath)
  28. if err != nil {
  29. return "", err
  30. }
  31. data, err := ioutil.ReadAll(file)
  32. if err != nil {
  33. return "", err
  34. }
  35. return string(data), nil
  36. }
  37. func WriteFile(filePath string, content []byte) error {
  38. fh, err := os.OpenFile(filePath, os.O_TRUNC|os.O_RDWR|os.O_CREATE, os.ModePerm)
  39. if err != nil {
  40. return err
  41. }
  42. defer fh.Close()
  43. _, err = fh.Write(content)
  44. if err != nil {
  45. return err
  46. }
  47. return nil
  48. }
  49. func AbsolutePath(Datadir string, filename string) string {
  50. if path.IsAbs(filename) {
  51. return filename
  52. }
  53. return path.Join(Datadir, filename)
  54. }