如何获取android中临时文件的文件大小?


Answers:


194

我希望这可以帮助您:

    File file = new File(selectedPath);
    int file_size = Integer.parseInt(String.valueOf(file.length()/1024));

其中,StringselectedPath是要确定其文件大小的文件的路径。

file.length()返回文件的长度(以字节为单位),如Java 7文档中所述

返回此抽象路径名表示的文件的长度(以字节为单位),如果文件不存在,则返回0L。某些操作系统可能返回0L作为表示与系统有关的实体(例如设备或管道)的路径名。

除以1024会将大小从字节转换为千字节。千字节= 1024字节。


20
提示:要在Android上以一种易于阅读的方式显示文件大小,可以使用Formatter.formatShortFileSize(context,file.length())
android开发人员

3
为什么要在字符串之间串行化和反序列化千字节大小?
Tobiq

13

Kotlin扩展解决方案

将它们添加到某个地方,然后致电myFile.sizeInMb或您需要的任何地方

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

如果您需要来自字符串或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"

使用Uri.path()而不是Uri.toString()!
Androidz

5

尝试使用以下代码:

// Get file from file name
    final String dirPath = f.getAbsolutePath();
    String fileName = url.substring(url.lastIndexOf('/') + 1);
    File file = new File(dirPath + "/" + fileName);

      // 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
private boolean isFileLessThan2MB(File file) {
    int maxFileSize = 2000000;
    Long l = file.length();
    String fileSize = l.toString();
    int finalFileSize = Integer.parseInt(fileSize);
    if (finalFileSize >= maxFileSize) {
        return true;
    } else {
        return false;
    }
}

您也可以使用此功能,我在使用file.lenght函数检查文件大小是否小于2MB时会以字节为单位返回文件大小。因此,我检查了文件大小(以字节为单位)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.