[解決済み] Javaでバイトサイズを人間が読める形式に変換するにはどうしたらいいですか?
2022-03-15 12:05:33
質問
Javaでバイトサイズを人間が読める形式に変換するにはどうしたらいいですか?
1024を1Kbに、1024*1024を1Mbにするように。
このユーティリティ・メソッドをプロジェクトごとに書くのは、ちょっとうんざりです。の静的メソッドはありますか? アパッチコモンズ を使用することはできますか?
解決方法は?
<ブロッククオート楽しい事実 ここに投稿されたオリジナルのスニペットは、Stack Overflowで史上最もコピーされたJavaスニペットであり、欠陥があったのです。それは修正されたが、面倒なことになった。
全文はこの記事で Stack Overflowで最もコピーされたスニペットに欠陥があった!
出典 バイトサイズを読みやすい形式にする|プログラミング.ガイド
SI(1k=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());
}
バイナリ(1Ki=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());
}
出力例です。
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)
関連
-
スタイルシートとして解釈されるリソースが、MIMEタイプtext/htmlで転送される。
-
ファインバグタイプ
-
エラーの解決方法 jarfile XXX.jarにアクセスできません。
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] スタックトレースを文字列に変換するにはどうすればよいですか?
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] JavaでInputStreamをバイト配列に変換する
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
javaで非静的な解を静的な参照にすることができない
-
Android Studio 3.1.2 で v4, v7 パッケージが見つからない シンボル 'AppCompatActivity' を解決できない
-
Javaクラスローダーにソースコードから潜り込む
-
プロローグでのコンテンツは禁止されています
-
JavaMailのメール送信が失敗するケースとその説明の分析
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException: 1
-
[解決済み] Javaでメソッドの実行時間を計るにはどうしたらいいですか?
-
[解決済み】.NETを使用して、人間が読めるファイルサイズ(bytes)の略語を取得するにはどうすればよいですか?
-
[解決済み】floatの小数点以下2桁の書式設定
-
[解決済み] ファイルサイズをMB、GBなどでフォーマットする[重複]。