Java 如何在android中获取临时文件的文件大小?
如果我使用openFileOutput()创建并写入临时文件,那么在完成写入后如何获得文件大小?我希望这可以帮助您:Java 如何在android中获取临时文件的文件大小?,java,android,Java,Android,如果我使用openFileOutput()创建并写入临时文件,那么在完成写入后如何获得文件大小?我希望这可以帮助您: File File=新文件(selectedPath); int file_size=Integer.parseInt(String.valueOf(file.length()/1024)); 其中字符串selectedPath是要确定其文件大小的文件的路径 file.length() 返回由该抽象路径名表示的文件的长度(以字节为单位),如果该文件不存在,则返回0L。某些操作系
File File=新文件(selectedPath);
int file_size=Integer.parseInt(String.valueOf(file.length()/1024));
其中字符串selectedPath
是要确定其文件大小的文件的路径
file.length()
返回由该抽象路径名表示的文件的长度(以字节为单位),如果该文件不存在,则返回0L。某些操作系统可能会为表示系统相关实体(如设备或管道)的路径名返回0L
除以1024将大小从字节转换为kibibytes。kibibytes=1024字节。尝试使用以下代码:
// 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) {
...
}
希望它对你有用 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"
你也可以使用这个函数,我用它来检查当你使用file.lenght函数时,文件大小是否小于2MB。它返回以字节为单位的文件大小。因此,我检查了文件大小(以字节为单位)。上面的所有代码都有一个小问题,因为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;
}
提示:要在Android上以可读的方式显示文件大小,可以使用Formatter.formatShortFileSize(context,file.length())
为什么要在字符串中序列化和反序列化千字节大小?要格式化文件大小,请尝试以下操作:使用Uri.path()而不是Uri.toString()!
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;
}