1 Star 0 Fork 0

xingang / gcore

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
FileUtils.go 2.54 KB
一键复制 编辑 原始数据 按行查看 历史
xingang 提交于 2022-08-09 12:40 . 解决循环引用问题
package helper
import (
"errors"
"fmt"
"io/ioutil"
"log"
"os"
"os/exec"
"path"
"path/filepath"
"runtime"
"strings"
)
func PathExists(path string) bool {
_, err := os.Stat(path)
if err == nil {
return true
}
if os.IsNotExist(err) {
return false
}
return false
}
func Mkdir(dir string) {
// 创建文件夹
var exist = PathExists(dir)
if exist {
fmt.Println(dir + "文件夹已存在!")
} else {
// 文件夹名称,权限
err := os.Mkdir(dir, os.ModePerm)
if err != nil {
fmt.Println(dir+"文件夹创建失败:", err.Error())
} else {
fmt.Println(dir + "文件夹创建成功!")
}
}
}
func GetFileContent(filePath string) (string, error) {
filePath = strings.ReplaceAll(filePath, "\\", "/")
bytes, err := ioutil.ReadFile(filePath)
if err != nil {
return "", err
}
return string(bytes), nil
}
// 最终方案-全兼容
func GetCurrentAbPath() string {
//if IsTempDirRun() {
// return "."
//}
return GetAbsPath()
}
func GetAbsPath() string {
dir := GetCurrentAbPathByExecutable()
if strings.Contains(dir, getTmpDir()) {
return getCurrentAbPathByCaller()
}
return dir
}
// 获取系统临时目录,兼容go run
func getTmpDir() string {
dir := os.Getenv("TEMP")
if dir == "" {
dir = os.Getenv("TMP")
}
res, _ := filepath.EvalSymlinks(dir)
return res
}
func IsTempDirRun() bool {
dir := os.Getenv("TEMP")
if dir == "" {
dir = os.Getenv("TMP")
}
return dir != ""
}
// 获取当前执行文件绝对路径
func GetCurrentAbPathByExecutable() string {
exePath, err := os.Executable()
if err != nil {
log.Fatal(err)
}
res, _ := filepath.EvalSymlinks(filepath.Dir(exePath))
return res
}
// 获取当前执行文件绝对路径(go run)
func getCurrentAbPathByCaller() string {
var abPath string
_, filename, _, ok := runtime.Caller(0)
if ok {
abPath = path.Dir(filename)
abPath = path.Dir(abPath)
abPath = path.Dir(abPath)
}
return abPath
}
func GetCurrentPath() (string, error) {
file, err := exec.LookPath(os.Args[0])
if err != nil {
return "", err
}
path, err := filepath.Abs(file)
if err != nil {
return "", err
}
i := strings.LastIndex(path, "/")
if i < 0 {
i = strings.LastIndex(path, "\\")
}
if i < 0 {
return "", errors.New(`error: Can't find "/" or "\".`)
}
return string(path[0 : i+1]), nil
}
func GetCurrentDirectory() string {
//返回绝对路径 filepath.Dir(os.Args[0])去除最后一个元素的路径
dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
if err != nil {
log.Fatal(err)
}
//将\替换成/
return strings.Replace(dir, "\\", "/", -1)
}
1
https://gitee.com/qq358678184_admin/gcore.git
git@gitee.com:qq358678184_admin/gcore.git
qq358678184_admin
gcore
gcore
996657994fe3

搜索帮助