Получение размера папки в Java возвращает отрицательное значение long

Я пытаюсь получить длину (file size) каталога, и я сделал для этого следующий рекурсивный метод, только я получаю очень странные результаты, когда передаю новый файл ("C: \\ Users \\ UserName \\ Desktop") в качестве параметра.

static long totalLength = 0;

// Method to get the size of a folder and its contents
private static long getFolderSize(File folder){
    if(folder.isDirectory()){
        File[] contents = folder.listFiles();
        for(File current : contents){
            if(current.isDirectory()){
                totalLength = totalLength +getFolderSize(current);
            }
            totalLength = totalLength + current.length();
        }
    }
    return totalLength;
} 

Интересно, что некоторые папки на моем рабочем столе действительно возвращают ожидаемые результаты, когда я передаю их в метод. Я просто не могу понять, почему тоже: я провел некоторую отладку длины отдельного файлы, и ни один из них не кажется отрицательным, но я все равно получаю отрицательные результаты!

Мы будем благодарны за любые идеи! Заранее спасибо

0
задан Andy 28 January 2012 в 17:30
поделиться