Метод получения размера каталога возвращает разные результаты - PullRequest
1 голос
/ 05 июля 2011

Я пытаюсь получить размер папки на Android. Проблемы:

  1. Каждый раз, когда функция возвращает что-то другое.
  2. Он не сканирует все файлы.

Может кто-нибудь сказать мне, почему?

private long dirSize(File dir) {
    long result = 0;
    File[] fileList = dir.listFiles();

    for(int i = 0; i < fileList.length; i++) {
        // Recursive call if it's a directory
        if(fileList[i].isDirectory()) {
            result += dirSize(fileList [i]);
        } else {
            // Sum the file size in bytes
            result += fileList[i].length();
        }
    }
    return result/1024/1024; // return the file size
}

Я получил эту функцию из другого потока. Как я могу улучшить этот код?

1 Ответ

6 голосов
/ 05 июля 2011

Избавьтесь от деления в конце.Каждая подпапка округляется до ближайшего МБ и добавляется к размеру текущей папки в байтах.Вернуть байты и обработать преобразование в вызывающей стороне.

...