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.