Wie erhalte ich die Dateigröße der temporären Datei in Android?
74
Wenn ich openFileOutput () zum Erstellen und Schreiben einer temporären Datei verwende, wie erhalte ich die Dateigröße, nachdem ich mit dem Schreiben fertig bin?
Gibt die Länge der durch diesen abstrakten Pfadnamen angegebenen Datei in Byte oder 0L zurück, wenn die Datei nicht vorhanden ist. Einige Betriebssysteme geben möglicherweise 0L für Pfadnamen zurück, die systemabhängige Entitäten wie Geräte oder Pipes bezeichnen.
Durch Teilen durch 1024 wird die Größe von Bytes in Kibibyte konvertiert. Kibibyte = 1024 Bytes.
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"
Antworten:
Ich hoffe das kann dir helfen:
File file = new File(selectedPath); int file_size = Integer.parseInt(String.valueOf(file.length()/1024));
Dabei ist der String
selectedPath
der Pfad zu der Datei, deren Dateigröße Sie bestimmen möchten.file.length()
Gibt die Länge der Datei in Bytes zurück, wie in der Java 7-Dokumentation beschrieben :Durch Teilen durch 1024 wird die Größe von Bytes in Kibibyte konvertiert. Kibibyte = 1024 Bytes.
quelle
Formatter.formatShortFileSize(context,file.length())
Kotlin-Erweiterungslösung
Fügen Sie diese irgendwo hinzu und rufen
myFile.sizeInMb
Sie dann an oder je nachdem, was Sie brauchenval 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 eine Datei aus einem String oder Uri benötigen, fügen Sie diese 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"
quelle
Versuchen Sie, den folgenden Code zu verwenden:
// 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) { ... }
Hoffe es wird für dich funktionieren .. !!
quelle