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