728x90
import java.text.NumberFormat;
public class FileSizeFormatter {
/**
* 주어진 바이트 크기를 사람이 읽기 쉬운 파일 크기 형식으로 변환합니다.
*
* @param byteSize 파일 크기 (바이트 단위)
* @param floatDigits 소수점 아래 자리수 (0이면 자동 결정)
* @return 사람이 읽기 쉬운 형식의 파일 크기 문자열
*/
public static String getFileSize(long byteSize, int floatDigits) {
double size = byteSize; // 바이트 크기를 double로 변환하여 저장
// 파일 크기 단위 배열
String[] units = {"Byte", "KB", "MB", "GB", "TB"};
int unitIndex = 0; // 현재 단위 인덱스 초기화
// 파일 크기가 1024 이상인 경우 단위를 변환
while (size >= 1024 && unitIndex < units.length - 1) {
size /= 1024; // 크기를 1024로 나누어 단위 변환
unitIndex++; // 단위 인덱스 증가
}
// 소수점 자리수 설정
// floatDigits가 0이고 소수점 이하가 있는 경우 기본값을 2로 설정
if (floatDigits == 0 && size % 1 != 0) {
floatDigits = 2;
}
// 숫자 형식 지정
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMinimumFractionDigits(floatDigits); // 최소 소수점 자리수 설정
numberFormat.setMaximumFractionDigits(floatDigits); // 최대 소수점 자리수 설정
// 포맷된 문자열과 단위 반환
return numberFormat.format(size) + " " + units[unitIndex];
}
public static void main(String[] args) {
// 예제: 1284662 바이트를 사람이 읽기 쉬운 형식으로 변환하여 출력
System.out.println(getFileSize(1284662, 0)); // 출력: 1.23 MB
}
}
728x90
'STUDY > JAVA' 카테고리의 다른 글
[Java] 파일 읽고 쓸 때 UTF-8 인코딩 처리 방법 정리 (1) | 2024.11.08 |
---|---|
[Java] Javadoc 활용한 자바 주석 처리 (0) | 2024.10.30 |
[JAVA] jdk 2개 이상 설정 방법 (java 버전 여러개 사용하기) (0) | 2024.10.11 |
[JAVA] 자바 쉘 스크립트 실행 방법 (0) | 2024.08.13 |
[JAVA] java.io 패키지 - 스트림으로 배우는 자바 입출력 (0) | 2024.07.31 |