zzr.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /*
  2. * Copyright (c) 2000-2018, 达梦数据库有限公司.
  3. * All rights reserved.
  4. */
  5. package util
  6. import (
  7. "go/build"
  8. "os"
  9. "runtime"
  10. "strings"
  11. )
  12. const (
  13. PathSeparator = string(os.PathSeparator)
  14. PathListSeparator = string(os.PathListSeparator)
  15. )
  16. var (
  17. goRoot = build.Default.GOROOT
  18. goPath = build.Default.GOPATH //获取实际编译时的GOPATH值
  19. )
  20. type fileUtil struct {
  21. }
  22. var FileUtil = &fileUtil{}
  23. func (fileUtil *fileUtil) Exists(path string) bool {
  24. if _, err := os.Stat(path); !os.IsNotExist(err) {
  25. return true
  26. }
  27. return false
  28. }
  29. func (fileUtil *fileUtil) Search(relativePath string) (path string) {
  30. if strings.Contains(runtime.GOOS, "windows") {
  31. relativePath = strings.ReplaceAll(relativePath, "/", "\\")
  32. }
  33. if fileUtil.Exists(goPath) {
  34. for _, s := range strings.Split(goPath, PathListSeparator) {
  35. path = s + PathSeparator + "src" + PathSeparator + relativePath
  36. if fileUtil.Exists(path) {
  37. return path
  38. }
  39. }
  40. }
  41. if fileUtil.Exists(goPath) {
  42. for _, s := range strings.Split(goPath, PathListSeparator) {
  43. path = s + PathSeparator + "pkg" + PathSeparator + relativePath
  44. if fileUtil.Exists(path) {
  45. return path
  46. }
  47. }
  48. }
  49. //if workDir, _ := os.Getwd(); fileUtil.Exists(workDir) {
  50. // path = workDir + PathSeparator + "src" + PathSeparator + relativePath
  51. // if fileUtil.Exists(path) {
  52. // return path
  53. // }
  54. //}
  55. //if fileUtil.Exists(goRoot) {
  56. // path = goRoot + PathSeparator + "src" + PathSeparator + relativePath
  57. // if fileUtil.Exists(path) {
  58. // return path
  59. // }
  60. //}
  61. return ""
  62. }