Código JAVA: Tamaño de archivo en su debida nomenclatura Sistema Internacional Decimal

El siguiente código se ejecuta de la siguiente manera, y tiene como objetivo mostrar el tamaño de un fichero determinado devolviendo una cadena de texto con el tamaño de archivo en su debida

nomenclatura Decimal del Sistema Internacional:
“bytes, KB, MB, GB, TB, EB, PB, ZB, YB”.

File-512

El código es el siguiente

/*
 * 19/07/2014
 * 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.
 */
package com.gd.utils;

import java.io.File;

/**
* @version 2.0 Julio de 2014
* @author Julio Chinchilla
*/
public class FileSize {

    private final static double fB = 1024.0;

    /**
     * Devuelve una cadena de texto con el tamaño de archivo en su debida
     * nomenclatura Decimal del Sistema Internacional:
     * "bytes, KB, MB, GB, TB, EB, PB, ZB, YB".
     * Donde bytes es la unidad mas pequeña equivalente a 8 bits.
     * @see <a href="http://es.wikipedia.org/wiki/Kilobyte">WikiES: KB = Kilobyte</a>
     * @see <a href="http://es.wikipedia.org/wiki/Megabyte">WikiES: MB = Megabyte</a>
     * @see <a href="http://es.wikipedia.org/wiki/Gigabyte">WikiES: GB = Gigabyte</a>
     * @see <a href="http://es.wikipedia.org/wiki/Terabyte">WikiES: TB = Terabyte</a>
     * @see <a href="http://es.wikipedia.org/wiki/Petabyte">WikiES: MB = Petabyte</a>
     * @see <a href="http://es.wikipedia.org/wiki/Exabyte">WikiES: EB = Exabyte</a>
     * @see <a href="http://es.wikipedia.org/wiki/Zettabyte">WikiES: ZB = Zettabyte</a>
     * @see <a href="http://es.wikipedia.org/wiki/Yottabyte">WikiES: YB = Zettabyte</a>
     * @param path Ruta de archivo que se desea verificar
     * @return tamaño en "bytes, KB, MB, GB, TB, EB, PB, ZB, YB"
     */
    public static String getFileSizeISDecimal (String path) {
        File file = new File(path);
        if (file.exists()) {
            double fL = file.length();
            if (fL <= fB) {
                return String.valueOf(fL).concat(" bytes");
            } else {
                double sizeKB = getFileSizeInKB(fL);
                if(getFileSizeInKB(fL) <= fB)
                    return String.valueOf(sizeKB).concat(" KB");
                else {
                    double sizeMB = getFileSizeInMB(fL);
                    if(sizeMB <= fB)
                        return String.valueOf(sizeMB).concat(" MB");
                    else {
                        double sizeGB = getFileSizeInGB(fL);
                        if(sizeGB <= fB)
                            return String.valueOf(sizeGB).concat(" GB");
                        else {
                            double sizeTB = getFileSizeInTB(fL);
                            if(sizeTB <= fB)
                                return String.valueOf(sizeTB).concat(" TB");
                            else {
                                double sizePB = getFileSizeInPB(fL);
                                if(sizePB <= 1024)
                                    return String.valueOf(sizePB).concat(" PB");
                                else {
                                    double sizeEB = getFileSizeInEB(fL);
                                    if (sizeEB <= 1024)
                                        return String.valueOf(sizePB).concat(" EB");
                                    else {
                                        double sizeZB = getFileSizeInZB(fL);
                                        if (sizeZB <= 1024) {
                                            return String.valueOf(sizeZB).concat(" ZB");
                                        } else
                                            return String.valueOf(getFileSizeInYB(fL)).concat(" YB");
                                    }
                                }
                            }
                        }
                    }
                }
            }
        } else {
            throw new java.util.EmptyStackException();
        }
    }

    /**
     * Recibe el tamaño de archivo y lo devuelve en Kilobytes
     * @param f para usos públicos el parámetro debe provenir de un objeto
     * double java.io.File.length();
     * @return Tamaño de archivo en Kilobytes
     */
    private static double getFileSizeInKB (double f) {
        f = (f/fB);
        int fs = (int) Math.pow(10,2);
        return Math.rint(f*fs)/fs;
    }

    /**
     * Recibe el tamaño de archivo y lo devuelve en Megabytes
     * @param f para usos públicos el parámetro debe provenir de un objeto
     * double java.io.File.length();
     * @return Tamaño de archivo en Megabytes
     */
    private static double getFileSizeInMB (double f) {
        f = f / Math.pow(fB,2);
        int fs = (int) Math.pow(10,2);
        return Math.rint(f*fs)/fs;
    }

    /**
     * Recibe el tamaño de archivo y lo devuelve en Gigabytes
     * @param f para usos públicos el parámetro debe provenir de un objeto
     * double java.io.File.length();
     * @return Tamaño de archivo en Gigabytes
     */
    private static double getFileSizeInGB (double f) {
        f = f / Math.pow(fB,3);
        int fs = (int) Math.pow(10,2);
        return Math.rint(f*fs)/fs;
    }

    /**
     * Recibe el tamaño de archivo y lo devuelve en Terabytes
     * @param f para usos públicos el parámetro debe provenir de un objeto
     * double java.io.File.length();
     * @return Tamaño de archivo en Kilobytes
     */
    private static double getFileSizeInTB (double f) {
        f = f / Math.pow(fB,4);
        int fs = (int) Math.pow(10,2);
        return Math.rint(f*fs)/fs;
    }

    /**
     * Recibe el tamaño de archivo y lo devuelve en Petabytes
     * @param f para usos públicos el parámetro debe provenir de un objeto
     * double java.io.File.length();
     * @return Tamaño de archivo en Petabytes
     */
    private static double getFileSizeInPB (double f) {
        f = f / Math.pow(fB,5);
        int fs = (int) Math.pow(10,2);
        return Math.rint(f*fs)/fs;
    }

    /**
     * Recibe el tamaño de archivo y lo devuelve en Exabytes
     * @param f para usos públicos el parámetro debe provenir de un objeto
     * double java.io.File.length();
     * @return Tamaño de archivo en Exabytes
     */
    private static double getFileSizeInEB (double f) {
        f = f / Math.pow(fB,5);
        int fs = (int) Math.pow(10,2);
        return Math.rint(f*fs)/fs;
    }

    /**
     * Recibe el tamaño de archivo y lo devuelve en Zettabytes
     * @param f para usos públicos el parámetro debe provenir de un objeto
     * double java.io.File.length();
     * @return Tamaño de archivo en Zettabytes
     */
    private static double getFileSizeInZB (double f) {
        f = f / Math.pow(fB,5);
        int fs = (int) Math.pow(10,2);
        return Math.rint(f*fs)/fs;
    }

    /**
     * Recibe el tamaño de archivo y lo devuelve en Yottabytes
     * @param f para usos públicos el parámetro debe provenir de un objeto
     * double java.io.File.length();
     * @return Tamaño de archivo en Yottabytes
     */
    private static double getFileSizeInYB (double f) {
        f = f / Math.pow(fB,6);
        int fs = (int) Math.pow(10,2);
        return Math.rint(f*fs)/fs;
    }

}

Ejemplo de Clase Main para ejecución del código

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package g4dh10.jpa_b01;

/**
 *
 * @author Julio
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String path = "C:\\Windows\\notepad.exe";
        String fileSize = com.gd.utils.FileSize.getFileSizeISDecimal(path);
        System.out.println(fileSize);
    }

}

Resultado:
sdfsd

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s