본문으로 건너뛰기

특정 경로의 총 파일 사이즈, 폴더 갯수, 파일 갯수 얻기

지정한 경로내의 총 파일 크기의 합과 폴더, 파일의 갯수를 리턴해주는 함수입니다.

관리자 대시보드등에서 특정 경로의 사용용량등을 표시하는데 쓰시면 되겠습니다.

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
}