Получить размер папки

Этот пример с сайта угловой документации просто делает href, даже не присваивая его пустой строке:

[X]

http://docs.angularjs.org/api/ng .directive: выберите

13
задан skaffman 2 July 2010 в 22:12
поделиться

5 ответов

import java.io.File;

public class GetFolderSize {

    int totalFolder = 0;
    int totalFile = 0;

    public static void main(String args[]) {
        String folder = "C:/GetExamples";
        try {
            GetFolderSize size = new GetFolderSize();
            long fileSizeByte = size.getFileSize(new File(folder));
            System.out.println("Folder Size: " + fileSizeByte + " Bytes");
            System.out.println("Total Number of Folders: "
                + size.getTotalFolder());
            System.out.println("Total Number of Files: " + size.getTotalFile());
        } catch (Exception e) {}
    }

    public long getFileSize(File folder) {
        totalFolder++;
        System.out.println("Folder: " + folder.getName());
        long foldersize = 0;
        File[] filelist = folder.listFiles();
        for (int i = 0; i < filelist.length; i++) {
            if (filelist[i].isDirectory()) {
                foldersize += getFileSize(filelist[i]);
            } else {
                totalFile++;
                foldersize += filelist[i].length();
            }
        }
        return foldersize;
    }

    public int getTotalFolder() {
        return totalFolder;
    }

    public int getTotalFile() {
        return totalFile;
    }
}
7
ответ дан 1 December 2019 в 17:20
поделиться

Есть небольшая ошибка с простым рекурсивным итерационным перебором всех вложенных папок. В некоторых файловых системах возможно создание круговых структур каталогов с использованием символических ссылок, как показано ниже:

mkdir -- parents father/son
ln -sf ${PWD}/father father/son
ls father/son/father/son/father/son/father/son/

Чтобы защититься от этой ошибки, можно использовать метод java.io.File#getCanonicalPath. Приведенный ниже код является небольшой модификацией предыдущего ответа.

public static long getFileSize(File folder) throws IOException {
    return ( getFileSize ( folder , new HashSet < String > ( ) ) ) ;
}

public static long getFileSize(File folder, Set<String> history)
        throws IOException {
    long foldersize = 0;
    File[] filelist = folder.listFiles();
    for (int i = 0; i < filelist.length; i++) {
        System.err.println("HISTORY");
        System.err.println(history);
        boolean inHistory = history.contains(filelist[i].getCanonicalPath());
        history.add(filelist[i].getCanonicalPath());
        if (inHistory) {
            // skip it
        } else if (filelist[i].isDirectory()) {
            foldersize += getFileSize(filelist[i], history);
        } else {
            foldersize += filelist[i].length();
        }
    }
    return foldersize;
}
4
ответ дан 1 December 2019 в 17:20
поделиться

Используйте apache-commons-io, есть класс FileUtils с методами sizeOfDirectory

28
ответ дан 1 December 2019 в 17:20
поделиться

Перебрать все подпапки в папке и получить суммарный размер всех файлов в них.

2
ответ дан 1 December 2019 в 17:20
поделиться

Папки обычно имеют очень маленький «Размер», их можно рассматривать как индекс.

Все программы, которые возвращают "Размер" папки, фактически выполняют итерацию и складывают размер файлов.

0
ответ дан 1 December 2019 в 17:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: