github.com/shishir-a412ed/docker@v1.3.2-0.20180103180333-fda904911d87/pkg/directory/directory_windows.go (about) 1 package directory 2 3 import ( 4 "os" 5 "path/filepath" 6 ) 7 8 // Size walks a directory tree and returns its total size in bytes. 9 func Size(dir string) (size int64, err error) { 10 err = filepath.Walk(dir, func(d string, fileInfo os.FileInfo, err error) error { 11 if err != nil { 12 // if dir does not exist, Size() returns the error. 13 // if dir/x disappeared while walking, Size() ignores dir/x. 14 if os.IsNotExist(err) && d != dir { 15 return nil 16 } 17 return err 18 } 19 20 // Ignore directory sizes 21 if fileInfo == nil { 22 return nil 23 } 24 25 s := fileInfo.Size() 26 if fileInfo.IsDir() || s == 0 { 27 return nil 28 } 29 30 size += s 31 32 return nil 33 }) 34 return 35 }