fastwalk.go 742 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package hybridBackup
  2. import (
  3. "os"
  4. "path/filepath"
  5. )
  6. /*
  7. High speed file walk function with no file stats
  8. */
  9. func fastWalk(root string, walkFunc func(string) error) error {
  10. return walkDir(root, walkFunc)
  11. }
  12. func walkDir(dir string, walkFunc func(string) error) error {
  13. files, err := os.ReadDir(dir)
  14. if err != nil {
  15. return err
  16. }
  17. for _, f := range files {
  18. if f.IsDir() {
  19. err := walkDir(filepath.Join(dir, f.Name()), walkFunc)
  20. if err != nil {
  21. return err
  22. }
  23. } else if !f.IsDir() {
  24. err := walkFunc(filepath.Join(dir, f.Name()))
  25. if err != nil {
  26. return err
  27. }
  28. }
  29. }
  30. return nil
  31. }
  32. func fileExists(filename string) bool {
  33. if _, err := os.Stat(filename); os.IsNotExist(err) {
  34. return false
  35. }
  36. return true
  37. }