1 Star 0 Fork 0

c./goframe

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
gfile_search.go 1.93 KB
一键复制 编辑 原始数据 按行查看 历史
// 版权归GoFrame作者(https://goframe.org)所有。保留所有权利。
//
// 本源代码形式受MIT许可证条款约束。
// 如果未随本文件一同分发MIT许可证副本,
// 您可以在https://github.com/gogf/gf处获取。
// md5:a9832f33b234e3f3
package 文件类
import (
"bytes"
"fmt"
garray "gitee.com/go_888/goframe/container/garray"
gerror "gitee.com/go_888/goframe/errors/gerror"
)
// X查找 通过名称 `name` 在以下路径中搜索文件,按照优先级进行:优先搜索路径(prioritySearchPaths)、当前工作目录(Pwd())、自身目录(SelfDir())和主包路径(MainPkgPath())。如果找到,则返回文件的绝对路径;如果没有找到,则返回空字符串。
// md5:4251b6145a87bd38
func X查找(文件名 string, 优先级查找路径 ...string) (路径 string, 错误 error) {
// 检查它是否是绝对路径。 md5:fcbf7e8f8e3d02b7
路径 = X取绝对路径且效验(文件名)
if 路径 != "" {
return
}
// Search paths array.
array := garray.X创建文本()
array.X弃用_Append(优先级查找路径...)
array.X弃用_Append(X取当前工作目录(), X取当前进程目录())
if path := X取main目录(); path != "" {
array.X弃用_Append(path)
}
// Remove repeated items.
array.X去重()
// Do the searching.
array.X遍历读锁定(func(array []string) {
path := ""
for _, v := range array {
path = X取绝对路径且效验(v + X常量_文件_系统分隔符 + 文件名)
if path != "" {
路径 = path
break
}
}
})
// 如果搜索失败,它将返回格式化的错误信息。 md5:fb9f11e1e7a4e8fc
if 路径 == "" {
buffer := bytes.NewBuffer(nil)
buffer.WriteString(fmt.Sprintf(`cannot find "%s" in following paths:`, 文件名))
array.X遍历读锁定(func(array []string) {
for k, v := range array {
buffer.WriteString(fmt.Sprintf("\n%d. %s", k+1, v))
}
})
错误 = gerror.X创建(buffer.String())
}
return
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/go_888/goframe.git
git@gitee.com:go_888/goframe.git
go_888
goframe
goframe
058f7b3fbad4

搜索帮助