Maison  >  Article  >  Java  >  Comment convertir des tailles d'octets en formats lisibles par l'homme en Java ?

Comment convertir des tailles d'octets en formats lisibles par l'homme en Java ?

DDD
DDDoriginal
2024-11-26 08:08:13887parcourir

How to Convert Byte Sizes to Human-Readable Formats in Java?

Obtention de la taille des octets dans un format lisible par l'homme en Java

Conversion de la taille des octets en formats lisibles par l'homme, tels que "1 Ko " ou " 1 Mo " est une tâche courante dans la programmation Java. Bien que vous puissiez souvent écrire vos propres méthodes utilitaires pour cela, il existe également des solutions réutilisables disponibles.

Apache Commons Static Methods

La bibliothèque Apache Commons Lang fournit des méthodes statiques méthodes de conversion d'octets tailles :

  1. humanReadableByteCountSI : Utilise des unités SI (base 1000) comme "GB", "MB", "kB".
  2. humanReadableByteCountBin : Utilise des unités binaires (base 1024) comme "GiB", "MiB", "KiB".

Détails d'implémentation

Voici les implémentations de ces méthodes :

Unités SI :

public static String humanReadableByteCountSI(long bytes) {
    if (-1000 < bytes && bytes < 1000) {
        return bytes + " B";
    }
    CharacterIterator ci = new StringCharacterIterator("kMGTPE");
    while (bytes <= -999_950 || bytes >= 999_950) {
        bytes /= 1000;
        ci.next();
    }
    return String.format("%.1f %cB", bytes / 1000.0, ci.current());
}

Binaire Unités :

public static String humanReadableByteCountBin(long bytes) {
    long absB = bytes == Long.MIN_VALUE ? Long.MAX_VALUE : Math.abs(bytes);
    if (absB < 1024) {
        return bytes + " B";
    }
    long value = absB;
    CharacterIterator ci = new StringCharacterIterator("KMGTPE");
    for (int i = 40; i >= 0 && absB > 0xfffccccccccccccL >>> i; i -= 10) {
        value >>>= 10;
        ci.next();
    }
    value *= Long.signum(bytes);
    return String.format("%.1f %ciB", value / 1024.0, ci.current());
}

Exemple de sortie

Le tableau suivant montre la sortie pour différentes tailles d'octets en utilisant à la fois les méthodes SI et binaires :

Byte Size SI Binary
0 0 B 0 B
27 27 B 27 B
1024 1.0 kB 1.0 KiB
1728 1.7 kB 1.7 KiB
1855425871872 1.9 TB 1.7 TiB

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn