filetil.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package filetil
  2. import (
  3. "os"
  4. "path/filepath"
  5. "strings"
  6. )
  7. //==================================
  8. //更多文件和目录的操作,使用filepath包和os包
  9. //==================================
  10. //返回的目录扫描结果
  11. type FileList struct {
  12. IsDir bool //是否是目录
  13. Path string //文件路径
  14. Ext string //文件扩展名
  15. Name string //文件名
  16. Size int64 //文件大小
  17. ModTime int64 //文件修改时间戳
  18. }
  19. //目录扫描
  20. //@param dir 需要扫描的目录
  21. //@return fl 文件列表
  22. //@return err 错误
  23. func ScanFiles(dir string) (fl []FileList, err error) {
  24. err = filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
  25. if err == nil {
  26. path = strings.Replace(path, "\\", "/", -1) //文件路径处理
  27. fl = append(fl, FileList{
  28. IsDir: info.IsDir(),
  29. Path: path,
  30. Ext: strings.ToLower(filepath.Ext(path)),
  31. Name: info.Name(),
  32. Size: info.Size(),
  33. ModTime: info.ModTime().Unix(),
  34. })
  35. }
  36. return err
  37. })
  38. return
  39. }