Depending on the size, return a size formatted in bytes, K, M, G or T bytes. - Java java.lang

Java examples for java.lang:int Format

Description

Depending on the size, return a size formatted in bytes, K, M, G or T bytes.

Demo Code

/**/*from  w ww.  j  av a2 s .co  m*/
 * Copyright (C) 2011 / cube-team <https://cube.forge.osor.eu>
 *
 * Licensed under the Apache License, Version 2.0 (the "License").
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
//package com.java2s;

public class Main {
    private static final double KILO = 1024;
    private static final double MEGA = KILO * 1024;
    private static final double GIGA = MEGA * 1000;
    private static final double TERA = GIGA * 1000;

    /**
     * Depending on the size, return a size formatted in bytes, K, M, G or T
     * bytes.
     * 
     * @param bytes
     *            size in bytes
     * @return human readable value
     */
    public static String format(long bytes) {
        if (bytes < 0) {
            return "invalid input(" + bytes + ")";
        }
        if (bytes < 1.0) {
            return String.format("%d byte", bytes);
        } else if (bytes < KILO) {
            return String.format("%d bytes", bytes);
        } else if (bytes < MEGA) {
            return String.format("%.1fK", bytes / KILO);
        } else if (bytes < GIGA) {
            return String.format("%.1fM", bytes / MEGA);
        } else if (bytes < TERA) {
            return String.format("%.1fG", bytes / GIGA);
        } else {
            return String.format("%.1fT", bytes / TERA);
        }
    }
}

Related Tutorials