특정 경로의 총 파일 사이즈, 폴더 갯수, 파일 갯수 얻기
지정한 경로내의 총 파일 크기의 합과 폴더, 파일의 갯수를 리턴해주는 함수입니다.
관리자 대시보드등에서 특정 경로의 사용용량등을 표시하는데 쓰시면 되겠습니다.
Go
/
* dirUsage
/
func dirUsage(currentPath string, info os.FileInfo, fileCnt int64, dirCnt int64) int64 {
size := info.Size()
if !info.IsDir() {
return size
}
dir, err := os.Open(currentPath)
if err != nil {
return 0
}
defer dir.Close()
fis, err := dir.Readdir(-1)
if err != nil {
return 0
}
for _, fi := range fis {
if fi.Name() == "." || fi.Name() == ".." {
continue
}
if fi.IsDir() {
dirCnt++
} else {
fileCnt++
}
size += dirUsage(currentPath+"/"+fi.Name(), fi, fileCnt, dirCnt)
}
return size
}
/
* getDirectorySize
/
func getDirectorySize(path string) (int64, int64, int64, error) {
info, err := os.Lstat(path)
if err != nil {
return 0, 0, 0, err
}
var dirCnt int64
var fileCnt int64
size := dirUsage(path, info, &fileCnt, &dirCnt)
return size, fileCnt, dirCnt, nil
}