как получить размер файла в мб? - PullRequest
53 голосов
/ 24 января 2012

У меня есть файл на сервере, и это zip-файл.Как проверить размер файла больше 27 МБ?

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

Ответы [ 9 ]

132 голосов
/ 24 января 2012

Используйте метод length() класса File, чтобы вернуть размер файла в байтах.

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

Вы можете объединить преобразование в один шаг, но я попытался полностьюпроиллюстрировать процесс.

40 голосов
/ 24 января 2012

Попробуйте следующий код:

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);
28 голосов
/ 15 марта 2014

Пример:

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 "";
}

7 голосов
/ 15 февраля 2017

Проще всего использовать FileUtils из Apache commons-io. (https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/FileUtils.html)

Возвращает читаемый человеком размер файла из байтов в экзабайт, округляя до границы.

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

// output will be like 56 MB 
7 голосов
/ 24 января 2012

file.length () вернет вам длину в байтах, затем вы разделите ее на 1048576 , и теперь у вас есть мегабайты!

3 голосов
/ 24 января 2012

Вы можете получить длину файла с помощью File # length () , который будет возвращать значение в байтах, поэтому вам нужно разделить его на 1024 * 1024, чтобы получить его значение в мегабайтах.

2 голосов
/ 10 июня 2016

Начиная с Java 7 вы можете использовать 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 голосов
/ 18 апреля 2017

Вы можете использовать подстроку для получения порции строки, равной 1 МБ:

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 голосов
/ 03 ноября 2013
public static long sizeOf(File file)

Подробнее об API: http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html

...