ruspa/tree/real_walker.go

32 lines
526 B
Go

package tree
import (
"os"
"path/filepath"
)
type RealWalker struct {
path string
report chan int64
}
func (r *RealWalker) walkFunc(path string, info os.FileInfo, err error) error {
if !info.IsDir() {
switch mode := info.Mode(); {
case mode.IsRegular():
r.report <- info.Size()
}
}
return nil
}
func (r *RealWalker) Walk() {
filepath.Walk(r.path, r.walkFunc)
close(r.report)
}
func NewRealWalker(path string, report chan int64) *RealWalker {
r := &RealWalker{path: path, report: report}
return r
}