これは何
abachibi.hatenablog.com このサイトのJavaバージョンでかなりシンプルに書けて目から鱗だったので。
ソース
Javaのバージョンは関係ないと思うけど、一応Java11で動かしてます。
本体
public static String convertToFileSize(final long fileSize) { double tempFileSize = fileSize; String[] units = {" B", " KB", " MB", " GB", " TB"}; int counter = 0; for (; tempFileSize > 1024; counter++) { tempFileSize = tempFileSize / 1024; } BigDecimal bd = new BigDecimal(tempFileSize); BigDecimal bd2 = bd.setScale(2, RoundingMode.HALF_UP); return bd2.stripTrailingZeros() + units[counter]; }
一応テストコード
import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; import lombok.extern.slf4j.Slf4j; @Slf4j public class FileUtilsTest { @Test void testB() { String a = FileUtils.convertToFileSize(1024L); assertEquals("1024 B", a); } @Test void testKb() { String a = FileUtils.convertToFileSize(1000000L); assertEquals("976.56 KB", a); } @Test void testMb() { String a = FileUtils.convertToFileSize(2197152L); assertEquals("2.1 MB", a); } }