lotus/extern/sector-storage/fsutil/filesize_unix.go

35 lines
606 B
Go
Raw Normal View History

2020-07-08 15:09:35 +00:00
package fsutil
import (
2020-08-04 14:20:59 +00:00
"os"
"path/filepath"
2020-07-08 15:09:35 +00:00
"golang.org/x/xerrors"
)
type SizeInfo struct {
OnDisk int64
}
// FileSize returns bytes used by a file or directory on disk
2020-07-08 15:09:35 +00:00
func FileSize(path string) (SizeInfo, error) {
var size int64
err := filepath.Walk(path, func(_ string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if !info.IsDir() {
size += info.Size()
}
return err
})
if err != nil {
if os.IsNotExist(err) {
2020-08-04 14:20:59 +00:00
return SizeInfo{}, os.ErrNotExist
}
return SizeInfo{}, xerrors.Errorf("filepath.Walk err: %w", err)
2020-07-08 15:09:35 +00:00
}
return SizeInfo{size}, nil
2020-07-08 17:51:26 +00:00
}