fastwalk.go 760 B

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