|
- package grlogs
-
- import (
- "crypto/md5"
- "encoding/hex"
- "fmt"
- "io/ioutil"
- "math/rand"
- "os"
- "path"
- "reflect"
- "runtime"
- "strings"
- "time"
- )
-
- type Empty struct {}
-
- //传入一个字符串,返回一个加密后的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)
- }
|