투케이2K

410. (kotlin/코틀린) [유틸 파일] getInternalAvailableStorageSpace : 내부 저장소 사용 가능한 용량 크기 구하기 - StatFs 본문

Kotlin

410. (kotlin/코틀린) [유틸 파일] getInternalAvailableStorageSpace : 내부 저장소 사용 가능한 용량 크기 구하기 - StatFs

투케이2K 2023. 9. 7. 22:33

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

 

        // -----------------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : [RETURN] getInternalAvailableStorageSpace : 내부 저장소 사용 가능한 용량 크기 구하기
        // -----------------------------------------------------------------------------------------
        fun getInternalAvailableStorageSpace(mContext: Context): String {

            /**
             * // -----------------------------------------
             * [getInternalAvailableStorageSpace 메소드 설명]
             * // -----------------------------------------
             * 1. 내부 저장소 사용 가능한 용량 크기 구하기
             * // -----------------------------------------
             * 2. 호출 방식 :
             *
             * C_App.getInternalAvailableStorageSpace(A_Intro@this)
             *
             * // -----------------------------------------
             * 3. 리턴 데이터 : 1 (GB)
             * // -----------------------------------------
             * 4. 추가 설명 :
             *
             * - StatFs 는 file System 의 정보를 전달해주는 클래스입니다
             * // -----------------------------------------
             */


            // [리턴 값 선언]
            var returnData = ""
            var kilobyte = 0.0
            var megabyte = 0.0
            var gigabyte = 0.0


            // [로직 처리 실시]
            try {

                val stat = StatFs(Environment.getDataDirectory().path)
                val byteSize = stat.availableBytes // [사용 가능 용량 확인 byte]

                if (byteSize > 0) {

                    kilobyte = (byteSize / 1024).toDouble() // [파일 kilobyte 크기]
                    megabyte = kilobyte / 1024 // [파일 megabyte 크기]
                    gigabyte = megabyte / 1024 // [파일 gigabyte 크기]
                    returnData = if (gigabyte > 0) {
                        String.format("%.2f", gigabyte) + " (GB)" // 소수점 2자리 까지만 출력
                    } else if (megabyte > 0) {
                        String.format("%.2f", megabyte) + " (MB)" // 소수점 2자리 까지만 출력
                    } else if (kilobyte > 0) {
                        String.format("%.2f", kilobyte) + " (KB)" // 소수점 2자리 까지만 출력
                    } else {
                        String.format("%.2f", byteSize) + " (Byte)" // 소수점 2자리 까지만 출력
                    }

                } else {
                    returnData = "0 (Byte)"
                }

            } catch (e: Exception) {
                S_Log._printStackTrace_(mContext, S_FinalMsg.LOG_BUG_STATE, null, e)
            }


            // [로그 출력 실시]
            ///*
            // ===============================================================
            S_Log._D_("내부 저장소 사용 가능한 용량 크기 확인", arrayOf(
                "RETURN :: $returnData"
            ))
            // ===============================================================
            // */


            // [리턴 반환 실시]
            return returnData
        }

 

반응형
Comments