file.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package core
  2. import (
  3. "io/ioutil"
  4. "log"
  5. "os"
  6. "path/filepath"
  7. "sort"
  8. )
  9. // @title FileExists
  10. // @description 检测文件是否存在
  11. // @param filePath 文件路径
  12. // @return bool 是否存在,error 是否成功
  13. func FileExists(filePath string) (bool, error) {
  14. _, err := os.Stat(filePath)
  15. if err == nil {
  16. return true, nil
  17. }
  18. if os.IsNotExist(err) {
  19. return false, nil
  20. }
  21. return false, err
  22. }
  23. // GetFileFromFolder 获取子文件夹里的文件名列表
  24. func GetFileFromFolder(folder string) ([]string, error) {
  25. filePaths := []string{}
  26. files, err := ioutil.ReadDir(folder)
  27. if err != nil {
  28. log.Printf("filepath.Glob error : %v\n", err)
  29. return filePaths, err
  30. }
  31. for _, f := range files {
  32. filePaths = append(filePaths, filepath.Join(folder, f.Name()))
  33. }
  34. return filePaths, nil
  35. }
  36. func RemoveFiles(folder, suffix string) error {
  37. filePaths, err := GetFileFromFolder(folder)
  38. if err != nil {
  39. log.Printf("GetFileFromFolder error : %v\n", err)
  40. return err
  41. }
  42. for _, filePath := range filePaths {
  43. if filePath[len(filePath)-len(suffix):] == suffix {
  44. err = os.Remove(filePath)
  45. if err != nil {
  46. log.Printf("Remove error : %v\n", err)
  47. }
  48. }
  49. }
  50. return nil
  51. }
  52. //2021-11-03
  53. func GetSubTitleByModTime(folder string) (string, error) {
  54. filePaths := []string{}
  55. files, err := ioutil.ReadDir(folder)
  56. if err != nil {
  57. log.Printf("filepath.Glob error : %v\n", err)
  58. return filePaths[0], err
  59. }
  60. //按mod时间排序
  61. sort.Slice(files, func(i, j int) bool {
  62. flag := false
  63. if files[i].ModTime().After(files[j].ModTime()) {
  64. flag = true
  65. } else if files[i].ModTime().Equal(files[j].ModTime()) {
  66. if files[i].Name() < files[j].Name() {
  67. flag = true
  68. }
  69. }
  70. return flag
  71. })
  72. for _, f := range files {
  73. filePaths = append(filePaths, filepath.Join(folder, f.Name()))
  74. }
  75. return filePaths[0], err
  76. }