| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- /*
- * Copyright (c) 2000-2018, 达梦数据库有限公司.
- * All rights reserved.
- */
- package util
- import (
- "go/build"
- "os"
- "runtime"
- "strings"
- )
- const (
- PathSeparator = string(os.PathSeparator)
- PathListSeparator = string(os.PathListSeparator)
- )
- var (
- goRoot = build.Default.GOROOT
- goPath = build.Default.GOPATH //获取实际编译时的GOPATH值
- )
- type fileUtil struct {
- }
- var FileUtil = &fileUtil{}
- func (fileUtil *fileUtil) Exists(path string) bool {
- if _, err := os.Stat(path); !os.IsNotExist(err) {
- return true
- }
- return false
- }
- func (fileUtil *fileUtil) Search(relativePath string) (path string) {
- if strings.Contains(runtime.GOOS, "windows") {
- relativePath = strings.ReplaceAll(relativePath, "/", "\\")
- }
- if fileUtil.Exists(goPath) {
- for _, s := range strings.Split(goPath, PathListSeparator) {
- path = s + PathSeparator + "src" + PathSeparator + relativePath
- if fileUtil.Exists(path) {
- return path
- }
- }
- }
- if fileUtil.Exists(goPath) {
- for _, s := range strings.Split(goPath, PathListSeparator) {
- path = s + PathSeparator + "pkg" + PathSeparator + relativePath
- if fileUtil.Exists(path) {
- return path
- }
- }
- }
- //if workDir, _ := os.Getwd(); fileUtil.Exists(workDir) {
- // path = workDir + PathSeparator + "src" + PathSeparator + relativePath
- // if fileUtil.Exists(path) {
- // return path
- // }
- //}
- //if fileUtil.Exists(goRoot) {
- // path = goRoot + PathSeparator + "src" + PathSeparator + relativePath
- // if fileUtil.Exists(path) {
- // return path
- // }
- //}
- return ""
- }
|