Saber tamaño de un archivo y convertir bytes a KiloBytes (B a KB)

Saber el tamaño de un archivo y convertir bytes a Kilobytes es algo muy sencillo en Java pero antes de ir al código debemos saber que (según wikipedia) Un kilobyte, cuya abreviatura correcta es kB y equivale a 1024 bytes.

Entendido esto revisemos como saber el tamaño de un archivo. Tan sencillo como crear un objeto File y aplicarle el método length()
String carpeta = "C:\\JaverosAnonimos.tk";
File directorio = new File (carpeta);
long bytes=file.length();

Listo! Ahora suponiendo que el tamaño es de 10 bytes y queremos convertirlo a KB solo tenemos que aplicar una división entre 1024 ¿No? lo que nos daría 0.009765625
//Se divide y se imprime el resultado
System.out.println( file.length()/1024);

Y el resultado es... cero!!!! O_o ¿Qué ha pasado aquí? La cosa es que estamos diviendo entre 1024 y este número es un entero no un decimal!! Por lo tanto Java convierte el resultado a entero. Mucha atención con este detalle, la solución es dividir entre un decimal
//Se divide y se imprime el resultado
System.out.println( file.length()/1024.0);

Ahora si! Felices con nuestro 0.009765625 pero como no queremos mostrar eso debemos redondearlo "hacia arriba" tal y como lo hace windows para obtener 1 KB.
Math.round(Math.ceil(file.length()/1024.0));

Es todo por hoy. Como siempre les dejo el ejemplo completo. No se olviden de seguirnos @JaverosAnonimos

import java.io.File;

/**
 *
 * @author @JaverosAnonimos
 */
 class ConvertirBytes {
    public static void main(String [] srgs){
        String carpeta = "C:\\JaverosAnonimos.tk";
        File file = new File (carpeta);
        //Tamaño del archivo en Bytes
        System.out.println(file.length());
        //Tamaño en KBs
        System.out.println( file.length()/1024.0);
        //Tamaño en KBs redondeado
        Math.round(Math.ceil(file.length()/1024.0));
    }
}

Post a Comment

Artículo Anterior Artículo Siguiente