如何获取mb中的文件大小?

时间:2012-01-24 15:49:32

标签: java file url filesize

我在服务器上有一个文件,它是一个zip文件。 如何检查文件大小是否大于27 MB?

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

12 个答案:

答案 0 :(得分:127)

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

您可以将转化合并为一个步骤,但我已尝试完全说明该过程。

答案 1 :(得分:38)

请尝试以下代码:

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

答案 2 :(得分:28)

示例:

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

答案 3 :(得分:7)

file.length()会以字节为单位返回长度,然后将其除以 1048576 ,现在你已经有了兆字节!

答案 4 :(得分:7)

最简单的方法是使用Apache commons-io中的FileUtil。(https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/FileUtils.html

从Bytes到Exabytes返回人类可读的文件大小,向下舍入到边界。

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

// output will be like 56 MB 

答案 5 :(得分:3)

您可以使用File#length()检索文件的长度,这将返回一个以字节为单位的值,因此您需要将其除以1024 * 1024以获取其值(以mb为单位)。

答案 6 :(得分:2)

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

答案 7 :(得分:0)

public static long sizeOf(File file)

有关API的更多信息:http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html

答案 8 :(得分:0)

您可以使用substring来获取String的portio,其等于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);
        }
    }

答案 9 :(得分:0)

您可以在FileChannel中使用Java

FileChannel具有 size()方法来确定文件的大小。

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

或者您可以使用Apache Commons'FileUtils的sizeOf()方法确定文件大小。如果您使用的是maven,请将其添加到pom.xml文件中。

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

尝试以下编码,

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

这些方法将以字节为单位输出大小。因此,要获取MB大小,您需要将文件大小除以(1024 * 1024)。

现在,您可以简单地使用if-else条件,因为以MB为单位捕获了大小。

答案 10 :(得分:0)

Kotlin扩展解决方案

将其添加到某个地方,然后致电if (myFile.sizeInMb > 27.0)或您需要的任何地方:

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

如果您想简化使用String或Uri的操作,请尝试添加以下内容:

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

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

如果您想轻松地将值显示为字符串,则这些是简单的包装。随意自定义显示的默认小数位

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"

答案 11 :(得分: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");             
        }

注意:1048576 =(1024 * 1024)= 1MB 输出:文件大小小于1 mb