Afficher la taille d'un fichier avec une unité

L'exemple sur la lecture des propriétés d'un fichier montre comment trouver la taille d'un fichier. La fonction Length() retourne la taille du fichier en octet.
Comment formater cette valeur avec son unité de mesure (Octet, Ko, Mo, Go) ?
import java.text.DecimalFormat;

/**
 * @author fobec.com 2010
 */
public class FileSizeFormater {

    /**
     * Constante taille
     */
    private static final long[] CST_SIZE = {1024, 1024 * 1024, 1024 * 1024 * 1024};
    /**
     * Constante unité
     */
    private static final String[] CST_UNITS = {"Ko", "Mo", "Go"};

    /**
     * Afficher la taille du fichier formatée
     * @param long taille en octet
     * @return string
     */
    public static String format(final long value) {
        String result = null;
        long size;
        for (int i = 0; i < 3; i++) {
            size=value/CST_SIZE[i];
            if (size <= 1024) {
                result = mergeUnit(size, CST_UNITS[i]);
                break;
            }
        }
        return result;
    }

    /**
     * Arrondir et ajouter l'unité
     * @param size
     * @param unit
     * @return
     */
    public static String mergeUnit(long size, String unit) {
        return new DecimalFormat("#,##0.#").format(size) + " " + unit;
    }

    /**
     * Exemple
     * @param args
     */
    public static void main(final String[] args) {
            System.out.println(format(123456));
    }
}
Résultats:
120 ko pour FileSizeFormater.format(123456);
  8 Mo pour FileSizeFormater.format(8805456);
Ajouter un commentaire
Pseudo
Adresse email
Site internet (optionnel)
Votre commentaire
Fiche de l'article
Mise a jour08/12/2010
VisualisationVu 685 fois
PublicInternaute
CategorieJAVA - Class - Fichier
Auteur de l'article
Axel Axel
connecté le 20/09/2011
28 ans - France Sud-Est
41 articles dans la section
Contacter l'auteur
Partager l'article