grlogs/function.go

78 lines
1.7 KiB
Go
Raw Normal View History

2020-04-01 11:45:33 +08:00
package grlogs
2020-04-01 11:51:04 +08:00
import (
"crypto/md5"
"encoding/hex"
"fmt"
"io/ioutil"
"math/rand"
"os"
"path"
"reflect"
"runtime"
"strings"
"time"
)
2020-04-01 11:52:02 +08:00
type Empty struct {}
2020-04-01 11:45:33 +08:00
//传入一个字符串返回一个加密后的md5
func Md5(str string) string {
data := []byte(str)
has := md5.Sum(data)
md5str := fmt.Sprintf("%x", has) //将[]byte转成16进制
return md5str
}
func Md5File(filePath string) string {
hash := md5.New()
data, _ := ioutil.ReadFile(filePath)
hash.Write([]byte(data))
md5str := hex.EncodeToString(hash.Sum(nil))
return md5str
}
func GetPackageName() string {
packpath := reflect.TypeOf(Empty{}).PkgPath()
if idx := strings.Index(packpath, "/"); idx > 0 {
return packpath[:idx]
} else {
return packpath
}
}
func GetCwd(filepath ...string) string {
_, filename1, _, _ := runtime.Caller(0)
filename2, _ := os.Getwd()
if !strings.HasSuffix(filename2, GetPackageName()) {
paths := append([]string{path.Dir(filename1), "/../../"}, filepath...)
return path.Join(paths...)
} else {
paths := append([]string{filename2, "/"}, filepath...)
return path.Join(paths...)
}
}
func SetCwd() error {
_, filename1, _, _ := runtime.Caller(0)
filename2, _ := os.Getwd()
if !strings.HasSuffix(filename2, GetPackageName()) {
paths := append([]string{path.Dir(filename1), "/../../"})
return os.Chdir(path.Join(paths...))
} else {
paths := append([]string{filename2, "/"})
return os.Chdir(path.Join(paths...))
}
}
func RandString(length int) string {
str := "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
bytes := []byte(str)
result := []byte{}
r := rand.New(rand.NewSource(time.Now().UnixNano()))
for i := 0; i < length; i++ {
result = append(result, bytes[r.Intn(len(bytes))])
}
return string(result)
}