SJA APS后端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
1.5 KiB

package glog
import (
"encoding/json"
"os"
"path/filepath"
"strings"
)
func GetCurrentDir() string {
dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
if err != nil {
c, _ := os.Getwd()
return c
}
return filepath.ToSlash(dir)
}
func GetAbsolutePath(path string) string {
if strings.Index(path, "./") == 0 || strings.Index(path, ".\\") == 0 {
r, _ := filepath.Abs(GetCurrentDir() + path[1:])
return filepath.ToSlash(r)
}
r, _ := filepath.Abs(path)
return filepath.ToSlash(r)
}
func GetDir(path string) string {
if strings.Index(path, "./") == 0 || strings.Index(path, ".\\") == 0 {
return filepath.ToSlash(filepath.Dir(GetCurrentDir() + path[1:]))
}
return filepath.ToSlash(filepath.Dir(path))
}
func EnsureDir(dir string) string {
fullDir := GetAbsolutePath(dir)
if IsExists(fullDir) {
return fullDir
}
os.MkdirAll(fullDir, 777)
return fullDir
}
func EnsureFilePath(filePath string) string {
filePath = GetAbsolutePath(filePath)
EnsureDir(GetDir(filePath))
return filePath
}
func IsExists(path string) bool {
_, err := os.Stat(path)
if err != nil && os.IsNotExist(err) {
return false
}
return true
}
func StructToString(obj interface{}) string {
if s, ok := obj.(string); ok {
return s
}
if s, ok := obj.(*string); ok {
return *s
}
if s, ok := obj.([]byte); ok {
n := len(s)
if n > 0 && s[0] == '{' && s[n-1] == '}' {
return string(s)
}
}
res, err := json.MarshalIndent(obj, "", " ")
if err != nil {
Errorln(err)
}
s := string(res)
return s
}