Вот лучший способ получить общий размер файла (работает для каталога и не-каталога):
public static long getSize(File file) {
long size;
if (file.isDirectory()) {
size = 0;
for (File child : file.listFiles()) {
size += getSize(child);
}
} else {
size = file.length();
}
return size;
}
Изменить: Обратите внимание, что это, вероятно, будет трудоемкой операцией. Не запускайте его в потоке пользовательского интерфейса.
Кроме того, здесь (взято из https://stackoverflow.com/a/5599842/1696171) - это хороший способ получить читаемую пользователем строку из возвращаемого длинного:
public static String getReadableSize(long size) {
if(size <= 0) return "0";
final String[] units = new String[] { "B", "KB", "MB", "GB", "TB" };
int digitGroups = (int) (Math.log10(size)/Math.log10(1024));
return new DecimalFormat("#,##0.#").format(size/Math.pow(1024, digitGroups))
+ " " + units[digitGroups];
}