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

时间:2012-04-18 04:32:31

标签: java android

如果我使用openFileOutput()来创建和写入临时文件,在写完文件后如何获取文件大小?

5 个答案:

答案 0 :(得分:117)

我希望这可以帮到你:

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

字符串selectedPath是要确定其文件大小的文件的路径。

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

  

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

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

答案 1 :(得分:11)

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"

答案 2 :(得分:0)

尝试使用以下代码:

$rows=mysqli_fetch_array($result)

希望它对您有用.. !!

答案 3 :(得分:0)

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时会以字节为单位返回文件大小。所以我检查了文件大小(以字节为单位)。

答案 4 :(得分:0)

以上所有代码都有一个小问题,因为file.length() 没有返回文件的确切大小。为了解决这个问题,我尝试了多种方法,一段时间后我得到了修复。以下是获取文件确切大小的代码。

请注意,对于字节到 KB 的转换,我除以 1000.0 而不是 1024.0。它对我有用。

public static String getFolderSizeLabel(File file) {
    double size = (double) getFolderSize(file) / 1000.0; // Get size and convert bytes into KB.
    if (size >= 1024) {
        return (size / 1024) + " MB";
    } else {
        return size + " KB";
    }
}
public static long getFolderSize(File file) {
    long size = 0;
    if (file.isDirectory()) {
        for (File child : file.listFiles()) {
            size += getFolderSize(child);
        }
    } else {
        size = file.length();
    }
    return size;
}