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  }