日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

在Java里怎将字节数转换为我们可以读懂的格式?

發布時間:2023/11/29 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Java里怎将字节数转换为我们可以读懂的格式? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題:在Java里怎將字節數轉換為我們可以讀懂的格式?

在Java里怎將字節數轉換為我們可以讀懂的格式

像1024應該變成"1 Kb",而1024*1024應該變成"1 Mb".

我很討厭為每個項目都寫一個工具方法。在Apache Commons有沒有這樣的一個靜態方法呢?

回答一

有趣的事情:這里上傳的源代碼片段是整個Stack Overflow最多人復制的,但是是有錯誤的。雖然被修復了,但是已經很混亂了。

這篇文章的完整故事:在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 BINARY0: 0 B 0 B27: 27 B 27 B999: 999 B 999 B1000: 1.0 kB 1000 B1023: 1.0 kB 1023 B1024: 1.0 kB 1.0 KiB1728: 1.7 kB 1.7 KiB110592: 110.6 kB 108.0 KiB7077888: 7.1 MB 6.8 MiB452984832: 453.0 MB 432.0 MiB28991029248: 29.0 GB 27.0 GiB1855425871872: 1.9 TB 1.7 TiB9223372036854775807: 9.2 EB 8.0 EiB (Long.MAX_VALUE)

回答二

private String bytesIntoHumanReadable(long bytes) {long kilobyte = 1024;long megabyte = kilobyte * 1024;long gigabyte = megabyte * 1024;long terabyte = gigabyte * 1024;if ((bytes >= 0) && (bytes < kilobyte)) {return bytes + " B";} else if ((bytes >= kilobyte) && (bytes < megabyte)) {return (bytes / kilobyte) + " KB";} else if ((bytes >= megabyte) && (bytes < gigabyte)) {return (bytes / megabyte) + " MB";} else if ((bytes >= gigabyte) && (bytes < terabyte)) {return (bytes / gigabyte) + " GB";} else if (bytes >= terabyte) {return (bytes / terabyte) + " TB";} else {return bytes + " Bytes";} }

文章翻譯自Stack Overflow:https://stackoverflow.com/questions/3758606/how-can-i-convert-byte-size-into-a-human-readable-format-in-java

總結

以上是生活随笔為你收集整理的在Java里怎将字节数转换为我们可以读懂的格式?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。