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);