Wie erhalte ich die Größe einer Datei in MB (Megabyte)?


72

Ich habe eine Zip-Datei auf einem Server.

Wie kann ich überprüfen, ob die Datei größer als 27 MB ist?

File file = new File("U:\intranet_root\intranet\R1112B2.zip");
if (file > 27) {
   //do something
}

Hier erhalten Sie lesbare Dateigrößenformatierung ... stackoverflow.com/a/5599842/2408621
DocFoster

Antworten:


162

Verwenden Sie die length()Methode der FileKlasse, um die Größe der Datei in Bytes zurückzugeben.

// 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) {
  ...
}

Sie könnten die Konvertierung in einem Schritt kombinieren, aber ich habe versucht, den Prozess vollständig zu veranschaulichen.


48

Versuchen Sie folgenden Code:

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

40

Beispiel:

public static String getStringSizeLengthFile(long size) {

    DecimalFormat df = new DecimalFormat("0.00");

    float sizeKb = 1024.0f;
    float sizeMb = sizeKb * sizeKb;
    float sizeGb = sizeMb * sizeKb;
    float sizeTerra = sizeGb * sizeKb;


    if(size < sizeMb)
        return df.format(size / sizeKb)+ " Kb";
    else if(size < sizeGb)
        return df.format(size / sizeMb) + " Mb";
    else if(size < sizeTerra)
        return df.format(size / sizeGb) + " Gb";

    return "";
}


Es werden viele nicht benötigte Dinge erledigt, aber ich denke, es ist für einen Neuling einfacher zu verstehen.
Buffalo


10

file.length () gibt Ihnen die Länge in Bytes zurück, dann teilen Sie diese durch 1048576 und jetzt haben Sie Megabyte!


3
Vielen Dank für diese Multiplikation. Dies erspart mir das Schreiben (1024 * 1024). 4 Tastenanschläge wurden gespeichert. : D
TapanHP

3

Sie können die Länge der Datei mit File # length () abrufen , wodurch ein Wert in Byte zurückgegeben wird. Sie müssen diesen also durch 1024 * 1024 teilen, um den Wert in MB zu erhalten.


3

Seit Java 7 können Sie verwenden 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");
}


0

Sie können Teilzeichenfolgen verwenden, um ein Portio von String zu erhalten, das 1 MB entspricht:

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

Sie können FileChannelin verwendenJava .

FileChannel verfügt über die size () -Methode, um die Größe der Datei zu bestimmen.

    String fileName = "D://words.txt";

    Path filePath = Paths.get(fileName);

    FileChannel fileChannel = FileChannel.open(filePath);
    long fileSize = fileChannel.size();

    System.out.format("The size of the file: %d bytes", fileSize);

Sie können die Dateigröße auch mit der Apache CommonsMethode 'FileUtils' sizeOf () bestimmen . Wenn Sie maven verwenden, fügen Sie dies der pom.xmlDatei hinzu.

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>

Versuchen Sie die folgende Codierung:

    String fileName = "D://words.txt";
    File f = new File(fileName);

    long fileSize = FileUtils.sizeOf(f);        

    System.out.format("The size of the file: %d bytes", fileSize);

Diese Methoden geben die Größe in Bytes aus. Um die MB-Größe zu erhalten, müssen Sie die Dateigröße von (1024 * 1024) teilen.

Jetzt können Sie einfach die if-elseBedingungen verwenden, da die Größe in MB erfasst wird.


0

Kotlin-Erweiterungslösung

Fügen Sie diese irgendwo hinzu und rufen if (myFile.sizeInMb > 27.0)Sie dann an oder je nachdem, was Sie brauchen:

val File.size get() = if (!exists()) 0.0 else length().toDouble()
val File.sizeInKb get() = size / 1024
val File.sizeInMb get() = sizeInKb / 1024
val File.sizeInGb get() = sizeInMb / 1024
val File.sizeInTb get() = sizeInGb / 1024

Wenn Sie die Arbeit mit einem String oder Uri vereinfachen möchten, fügen Sie Folgendes hinzu:

fun Uri.asFile(): File = File(toString())

fun String?.asUri(): Uri? {
    try {
        return Uri.parse(this)
    } catch (e: Exception) {
    }
    return null
}

Wenn Sie die Werte einfach als Zeichenfolge anzeigen möchten, sind dies einfache Wrapper. Sie können die angezeigten Standard-Dezimalstellen jederzeit anpassen

fun File.sizeStr(): String = size.toString()
fun File.sizeStrInKb(decimals: Int = 0): String = "%.${decimals}f".format(sizeInKb)
fun File.sizeStrInMb(decimals: Int = 0): String = "%.${decimals}f".format(sizeInMb)
fun File.sizeStrInGb(decimals: Int = 0): String = "%.${decimals}f".format(sizeInGb)

fun File.sizeStrWithBytes(): String = sizeStr() + "b"
fun File.sizeStrWithKb(decimals: Int = 0): String = sizeStrInKb(decimals) + "Kb"
fun File.sizeStrWithMb(decimals: Int = 0): String = sizeStrInMb(decimals) + "Mb"
fun File.sizeStrWithGb(decimals: Int = 0): String = sizeStrInGb(decimals) + "Gb"

0
     String FILE_NAME = "C:\\Ajay\\TEST\\data_996KB.json";
     File file = new File(FILE_NAME);

    if((file.length()) <= (1048576)) {      
        System.out.println("file size is less than 1 mb");
        }else {
            System.out.println("file size is More  than 1 mb");             
        }

Hinweis: 1048576 = (1024 * 1024) = 1 MB Ausgabe: Die Dateigröße beträgt weniger als 1 MB

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.