comment obtenir la taille du fichier en mo?

j'ai un fichier sur un serveur et c'est un fichier zip. Comment vérifier si la taille du fichier est supérieure à 27 Mo?

File file = new File("U:intranet_rootintranetR1112B2.zip");
if (file > 27) {
   //do something
}
45
demandé sur Ragunath Jawahar 2012-01-24 19:49:31

9 réponses

length() méthode de l' File classe pour retourner la taille du fichier en octets.

// Get file from file name
File file = new File("U:\intranet_root\intranet\R1112B2.zip");

// Get length of file in bytes
long fileSizeInBytes = file.length();
// Convert the bytes to Kilobytes (1 KB = 1024 Bytes)
long fileSizeInKB = fileSizeInBytes / 1024;
// Convert the KB to MegaBytes (1 MB = 1024 KBytes)
long fileSizeInMB = fileSizeInKB / 1024;

if (fileSizeInMB > 27) {
  ...
}

Vous pouvez combiner la conversion en une seule étape, mais j'ai essayé d'illustrer pleinement le processus.

106
répondu Marcus Adams 2012-01-24 16:00:01

essayez le code suivant:

File file = new File("infilename");

// Get the number of bytes in the file
long sizeInBytes = file.length();
//transform in MB
long sizeInMb = sizeInBytes / (1024 * 1024);
34
répondu endian 2012-01-24 15:57:33

Exemple :

public static String getStringSizeLengthFile(long size) {

    DecimalFormat df = new DecimalFormat("0.00");

    float sizeKb = 1024.0f;
    float sizeMo = sizeKb * sizeKb;
    float sizeGo = sizeMo * sizeKb;
    float sizeTerra = sizeGo * sizeKb;


    if(size < sizeMo)
        return df.format(size / sizeKb)+ " Kb";
    else if(size < sizeGo)
        return df.format(size / sizeMo) + " Mo";
    else if(size < sizeTerra)
        return df.format(size / sizeGo) + " Go";

    return "";
}
20
répondu Nicolas 2014-03-15 15:34:39

fichier.longueur() vous renvoie la longueur, en octets, puis vous divisez-le par 1048576

6
répondu Luciano 2012-01-24 15:52:59

Le plus simple est D'utiliser les fichiers D'Apache commons-io.( https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/FileUtils.html)

renvoie la taille du fichier lisible par l'utilisateur à partir des octets vers les exaoctets , en arrondissant vers le bas à la limite.

File fileObj = new File(filePathString);
String fileSizeReadable = FileUtils.byteCountToDisplaySize(fileObj.length());

// output will be like 56 MB 
6
répondu kazim 2017-02-15 14:54:02

Vous pouvez récupérer la longueur du fichier avec Fichier#length(), qui retournera une valeur en octets, donc vous devez la diviser par 1024*1024 pour obtenir sa valeur en mb.

2
répondu Kingamajick 2012-01-24 15:53:39

Depuis Java 7 vous pouvez utiliser java.nio.file.Files.size(Path p).

Path path = Paths.get("C:\1.txt");

long expectedSizeInMB = 27;
long expectedSizeInBytes = 1024 * 1024 * expectedSizeInMB;

long sizeInBytes = -1;
try {
    sizeInBytes = Files.size(path);
} catch (IOException e) {
    System.err.println("Cannot get the size - " + e);
    return;
}

if (sizeInBytes > expectedSizeInBytes) {
    System.out.println("Bigger than " + expectedSizeInMB + " MB");
} else {
    System.out.println("Not bigger than " + expectedSizeInMB + " MB");
}
1
répondu ROMANIA_engineer 2016-06-10 09:42:46
public static long sizeOf(File file)

Plus d'informations sur API : http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html

0
répondu Balaji Boggaram Ramanarayan 2013-11-03 06:10:52

Vous pouvez utiliser la sous-chaîne pour obtenir la part de la chaîne qui est égale à 1 mb:

public static void main(String[] args) {
        // Get length of String in bytes
        String string = "long string";
        long sizeInBytes = string.getBytes().length;
        int oneMb=1024*1024;
        if (sizeInBytes>oneMb) {
          String string1Mb=string.substring(0, oneMb);
        }
    }
0
répondu Jay Smith 2017-04-18 06:38:44