Byte-Einheiten können Sie das so machen:
long input1 = 1024;
long input2 = 1024 * 1024;
Assert.assertEquals("1 KiB", BinaryByteUnit.format(input1));
Assert.assertEquals("1 MiB", BinaryByteUnit.format(input2));
Assert.assertEquals("1.024 KB", DecimalByteUnit.format(input1, "#.0"));
Assert.assertEquals("1.049 MB", DecimalByteUnit.format(input2, "#.000"));
NumberFormat format = new DecimalFormat("#.#");
Assert.assertEquals("1 KiB", BinaryByteUnit.format(input1, format));
Assert.assertEquals("1 MiB", BinaryByteUnit.format(input2, format));
Ich habe eine weitere Bibliothek geschrieben, die Speicher-Einheiten die es Ihnen ermöglicht, dies so zu tun:
String formattedUnit1 = StorageUnits.formatAsCommonUnit(input1, "#");
String formattedUnit2 = StorageUnits.formatAsCommonUnit(input2, "#");
String formattedUnit3 = StorageUnits.formatAsBinaryUnit(input1);
String formattedUnit4 = StorageUnits.formatAsBinaryUnit(input2);
String formattedUnit5 = StorageUnits.formatAsDecimalUnit(input1, "#.00", Locale.GERMAN);
String formattedUnit6 = StorageUnits.formatAsDecimalUnit(input2, "#.00", Locale.GERMAN);
String formattedUnit7 = StorageUnits.formatAsBinaryUnit(input1, format);
String formattedUnit8 = StorageUnits.formatAsBinaryUnit(input2, format);
Assert.assertEquals("1 kB", formattedUnit1);
Assert.assertEquals("1 MB", formattedUnit2);
Assert.assertEquals("1.00 KiB", formattedUnit3);
Assert.assertEquals("1.00 MiB", formattedUnit4);
Assert.assertEquals("1,02 kB", formattedUnit5);
Assert.assertEquals("1,05 MB", formattedUnit6);
Assert.assertEquals("1 KiB", formattedUnit7);
Assert.assertEquals("1 MiB", formattedUnit8);
Falls Sie eine bestimmte Einheit erzwingen wollen, tun Sie dies:
String formattedUnit9 = StorageUnits.formatAsKibibyte(input2);
String formattedUnit10 = StorageUnits.formatAsCommonMegabyte(input2);
Assert.assertEquals("1024.00 KiB", formattedUnit9);
Assert.assertEquals("1.00 MB", formattedUnit10);
43 Stimmen
Wenn Sie die standardisierten Einheiten verwenden, sollte 1024 zu "1KiB" und 1024*1024 zu "1MiB" werden. de.wikipedia.org/wiki/Binary_prefix
0 Stimmen
@Pascal: Es sollte mehrere Funktionen oder eine Option zur Angabe der Basis und der Einheit geben.
0 Stimmen
Mögliche Duplikate von Dateigröße als MB, GB usw. formatieren
4 Stimmen
@Pascal Cuoq: Danke für den Hinweis. Mir war nicht klar, dass wir hier in der EU gesetzlich verpflichtet sind, die richtigen Präfixe zu verwenden, bis ich ihn gelesen habe.
2 Stimmen
@DerMike Sie erwähnten, dass "bis eine solche Bibliothek existiert". Das ist jetzt wahr geworden :-) stackoverflow.com/questions/3758606/
1 Stimmen
@AaronDigulla Sie haben Recht. Warum war das 2 Monate ältere Frage als Duplikat geschlossen, und nicht dieses hier?
0 Stimmen
Ähnliches Thema in Kotlin stackoverflow.com/q/59234916
1 Stimmen
@hc_dev Ich nehme an, dass die 2 Monate ältere Frage geschlossen wurde, weil diese Frage weitaus bessere Antworten enthielt. Diese Fragen wurden beide 2010 gestellt, die andere wurde erst 2013 geschlossen. (SO sollte wirklich eine "Fragen zusammenführen"-Funktion haben, um die Antworten von beiden an einem Ort zu sammeln).