728x90
반응형
질문 : Java에서 바이트 크기를 사람이 읽을 수있는 형식으로 어떻게 변환 할 수 있습니까?
Java에서 바이트 크기를 사람이 읽을 수있는 형식으로 어떻게 변환 할 수 있습니까?
1024처럼 "1Kb"가되고 1024 * 1024는 "1Mb"가되어야합니다.
나는 각 프로젝트에 대해이 유틸리티 메소드를 작성하는 데 지겨워합니다. 이를 위해 Apache Commons 에 정적 방법이 있습니까?
답변
재미있는 사실 : 여기에 게시 된 원본 스 니펫은 Stack Overflow에서 역대 가장 많이 복사 된 Java 스 니펫이었으며 결함이있었습니다. 수정되었지만 더러워졌습니다. 이 기사의 전체 기사 : 가장 많이 복사 된 Stack Overflow 스 니펫은 결함이 있습니다!
재미있는 사실 : 여기에 게시 된 원본 스 니펫은 Stack Overflow에서 역대 가장 많이 복사 된 Java 스 니펫이었으며 결함이있었습니다. 수정되었지만 더러워졌습니다.
이 기사의 전체 기사 : 가장 많이 복사 된 Stack Overflow 스 니펫은 결함이 있습니다!
출처 : 바이트 크기를 사람이 읽을 수있는 형식으로 포맷 | 프로그래밍. 가이드
SI (1 k = 1,000)
public static String humanReadableByteCountSI(long bytes) {
if (-1000 < bytes && bytes < 1000) {
return bytes + " B";
}
CharacterIterator ci = new StringCharacterIterator("kMGTPE");
while (bytes <= -999_950 || bytes >= 999_950) {
bytes /= 1000;
ci.next();
}
return String.format("%.1f %cB", bytes / 1000.0, ci.current());
}
Binary (1 Ki = 1,024)
public static String humanReadableByteCountBin(long bytes) {
long absB = bytes == Long.MIN_VALUE ? Long.MAX_VALUE : Math.abs(bytes);
if (absB < 1024) {
return bytes + " B";
}
long value = absB;
CharacterIterator ci = new StringCharacterIterator("KMGTPE");
for (int i = 40; i >= 0 && absB > 0xfffccccccccccccL >> i; i -= 10) {
value >>= 10;
ci.next();
}
value *= Long.signum(bytes);
return String.format("%.1f %ciB", value / 1024.0, ci.current());
}
Example output:
SI BINARY
0: 0 B 0 B
27: 27 B 27 B
999: 999 B 999 B
1000: 1.0 kB 1000 B
1023: 1.0 kB 1023 B
1024: 1.0 kB 1.0 KiB
1728: 1.7 kB 1.7 KiB
110592: 110.6 kB 108.0 KiB
7077888: 7.1 MB 6.8 MiB
452984832: 453.0 MB 432.0 MiB
28991029248: 29.0 GB 27.0 GiB
1855425871872: 1.9 TB 1.7 TiB
9223372036854775807: 9.2 EB 8.0 EiB (Long.MAX_VALUE)
출처 : https://stackoverflow.com/questions/3758606/how-can-i-convert-byte-size-into-a-human-readable-format-in-java
728x90
반응형
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
Java에서 HTTP 요청을 보내는 방법 (0) | 2021.07.15 |
---|---|
"java.lang.OutOfMemoryError : PermGen 공간"오류 처리 (0) | 2021.07.14 |
Java에서 객체를 복사하는 방법 (0) | 2021.07.13 |
Java에서 C++ Pairl에 해당하는 것 (0) | 2021.07.12 |
다중 JFrame의 사용 : 좋은 습관인가? 나쁜 습관인가? (0) | 2021.07.08 |