Here you can find the source of formatBytes(long bytes)
Parameter | Description |
---|---|
bytes | Bytes. |
public static String formatBytes(long bytes)
//package com.java2s; /**/*w w w. jav a2 s . co m*/ * Oshi (https://github.com/dblock/oshi) * * Copyright (c) 2010 - 2016 The Oshi Project Team * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Maintainers: * dblock[at]dblock[dot]org * widdis[at]gmail[dot]com * enrico.bianchi[at]gmail[dot]com * * Contributors: * https://github.com/dblock/oshi/graphs/contributors */ public class Main { /** * Binary prefixes, used in IEC Standard for naming bytes. * (http://en.wikipedia.org/wiki/International_Electrotechnical_Commission) * * Should be used for most representations of bytes */ private static final long KIBI = 1L << 10; private static final long MEBI = 1L << 20; private static final long GIBI = 1L << 30; private static final long TEBI = 1L << 40; private static final long PEBI = 1L << 50; private static final long EXBI = 1L << 60; /** * Format bytes into a rounded string representation using IEC standard * (matches Mac/Linux). For hard drive capacities, use @link * {@link #formatBytesDecimal(long)}. For Windows displays for KB, MB and * GB, in JEDEC units, edit the returned string to remove the 'i' to display * the (incorrect) JEDEC units. * * @param bytes * Bytes. * @return Rounded string representation of the byte size. */ public static String formatBytes(long bytes) { if (bytes == 1L) { // bytes return String.format("%d byte", bytes); } else if (bytes < KIBI) { // bytes return String.format("%d bytes", bytes); } else if (bytes < MEBI) { // KiB return formatUnits(bytes, KIBI, "KiB"); } else if (bytes < GIBI) { // MiB return formatUnits(bytes, MEBI, "MiB"); } else if (bytes < TEBI) { // GiB return formatUnits(bytes, GIBI, "GiB"); } else if (bytes < PEBI) { // TiB return formatUnits(bytes, TEBI, "TiB"); } else if (bytes < EXBI) { // PiB return formatUnits(bytes, PEBI, "PiB"); } else { // EiB return formatUnits(bytes, EXBI, "EiB"); } } /** * Format units as exact integer or fractional decimal based on the prefix, * appending the appropriate units * * @param value * The value to format * @param prefix * The divisor of the unit multiplier * @param unit * A string representing the units * @return A string with the value */ private static String formatUnits(long value, long prefix, String unit) { if (value % prefix == 0) { return String.format("%d %s", value / prefix, unit); } return String.format("%.1f %s", (double) value / prefix, unit); } }