1 Star 0 Fork 0

nggs / util

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
file.go 1.62 KB
一键复制 编辑 原始数据 按行查看 历史
李文建 提交于 2019-04-26 14:57 . 添加Walk方法,方便写工具
package util
import (
"os"
"path"
"path/filepath"
"strings"
)
// 获取当前可执行文件名(不含扩展名)
func GetProgramFileBaseName() string {
_, file := filepath.Split(os.Args[0])
if len(file) > 0 {
ext := path.Ext(file)
if len(ext) > 0 {
file = strings.TrimSuffix(file, ext)
}
}
return file
}
// 如果目录不存在创建指定目录
func IsDirOrFileExist(path string) error {
_, err := os.Stat(path)
if err != nil {
if os.IsNotExist(err) {
return err
}
panic(err)
}
return nil
}
// 如果目录不存在创建指定目录
func MustMkdirIfNotExist(path string) {
if err := IsDirOrFileExist(path); err != nil {
os.MkdirAll(path, os.ModePerm)
}
}
func Walk(dir string, extend string, whiteList []string, blackList []string, fn func(path string, info os.FileInfo, name string, isInBlackList bool) bool) (err error) {
absDir, err := filepath.Abs(dir)
if err != nil {
return
}
if len(whiteList) > 0 {
for _, w := range whiteList {
path := filepath.Join(absDir, w+"."+extend)
info, err := os.Lstat(path)
if err != nil {
continue
}
if !fn(path, info, w, false) {
break
}
}
} else {
ms, err := filepath.Glob(filepath.Join(absDir, "*."+extend))
if err != nil {
return err
}
for _, path := range ms {
info, err := os.Lstat(path)
if err != nil {
continue
}
name := strings.TrimSuffix(info.Name(), "."+extend)
var isInBlackList bool
if len(blackList) > 0 {
for _, n := range blackList {
if name == n {
isInBlackList = true
break
}
}
}
if !fn(path, info, name, isInBlackList) {
break
}
}
}
return
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/nggs/util.git
git@gitee.com:nggs/util.git
nggs
util
util
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891