文件大小
public static String formatFileSize(Context context, long sizeBytes) {
return formatFileSize(context, sizeBytes, 0);
}
public static String formatFileSize(Context context, long sizeBytes, int flag) {
if (context == null) {
return "";
}
BytesResult res = formatBytes(context.getResources(), sizeBytes, flag);
return String.format(Locale.getDefault(), "%s %s", new Object[]{res.value, res.units});
}
public static BytesResult formatBytes(Resources res, long sizeBytes, int flags) {
String roundFormat;
boolean isNegative = sizeBytes < 0;
float result = isNegative ? (float) (-sizeBytes) : (float) sizeBytes;
int suffix = R.string.byteShort;
long mult = 1;
if (result > 900.0f) {
suffix = R.string.kilobyteShort;
mult = 1024;
result /= 1024.0f;
}
if (result > 900.0f) {
suffix = R.string.megabyteShort;
mult *= 1024;
result /= 1024.0f;
}
if (result > 900.0f) {
suffix = R.string.gigabyteShort;
mult *= 1024;
result /= 1024.0f;
}
if (result > 900.0f) {
suffix = R.string.terabyteShort;
mult *= 1024;
result /= 1024.0f;
}
if (result > 900.0f) {
suffix = R.string.petabyteShort;
mult *= 1024;
result /= 1024.0f;
}
if (mult == 1 || result >= 100.0f) {
roundFormat = "%.0f";
} else if (result < 1.0f) {
roundFormat = "%.2f";
} else if (result < 10.0f) {
if ((flags & 1) != 0) {
roundFormat = "%.1f";
} else {
roundFormat = "%.2f";
}
} else if ((flags & 1) != 0) {
roundFormat = "%.0f";
} else {
roundFormat = "%.2f";
}
if (isNegative) {
result = -result;
}
return new BytesResult(String.format(roundFormat, new Object[]{Float.valueOf(result)}), res.getString(suffix));
}