utils.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package collector
  2. import (
  3. "hash"
  4. "io"
  5. "os"
  6. "strings"
  7. )
  8. // -----------------------------------------------------------------------------------
  9. // cleanName 函数清理输入的字符串,通过替换或删除特定字符来规范化它。
  10. // 参数:
  11. // s: 需要处理的输入字符串
  12. // 返回:
  13. // 返回经过清理和规范化后的字符串
  14. func cleanName(s string) string {
  15. // 将字符串中的所有空格替换为下划线
  16. s = strings.ReplaceAll(s, " ", "_") // Remove spaces
  17. // 将字符串中的所有连字符(-)替换为下划线
  18. s = strings.ReplaceAll(s, "-", "_") // Remove hyphens
  19. // 将字符串中的所有左括号(()移除
  20. s = strings.ReplaceAll(s, "(", "") // Remove open parenthesis
  21. // 将字符串中的所有右括号())移除
  22. s = strings.ReplaceAll(s, ")", "") // Remove close parenthesis
  23. // 将字符串中的所有正斜杠(/)移除
  24. s = strings.ReplaceAll(s, "/", "") // Remove forward slashes
  25. // 将字符串中的所有星号(*)移除
  26. s = strings.ReplaceAll(s, "*", "") // Remove asterisks
  27. // 将整个字符串转换为小写字母
  28. s = strings.ToLower(s)
  29. // 返回处理后的字符串
  30. return s
  31. }
  32. // hashFile 函数用于计算指定文件的哈希值。
  33. // 参数:
  34. // h: 一个实现了 hash.Hash 接口的哈希对象(如 sha256.New()),用于存储文件的哈希值。
  35. // fn: 要计算哈希值的文件路径。
  36. // 返回:
  37. // 如果计算过程中出现错误,返回该错误;否则返回 nil。
  38. func hashFile(h hash.Hash, fn string) error {
  39. // 打开指定的文件
  40. f, err := os.Open(fn)
  41. if err != nil {
  42. // 如果文件打开失败,返回错误
  43. return err
  44. }
  45. defer f.Close() // 确保函数结束时关闭文件
  46. // 将文件内容复制到哈希计算器 h 中
  47. if _, err := io.Copy(h, f); err != nil {
  48. // 如果复制过程中发生错误,返回错误
  49. return err
  50. }
  51. // 返回 nil,表示没有发生错误
  52. return nil
  53. }