Статьи Генератор паролей UUID MD5 Unix-время URL-encode Base64 Форматирование XML Ваш внешний IP Число прописью


Вычисление размера директории

Вернуться назад

25 января 2020

Тэги: Java 8 Stream API алгоритмы

При работе с файловой системой может потребоваться вычислить размер папки (folder) с лежащими в ней файлами. Как известно, директория - это лишь логический раздел на файловой системе, поэтому её размер равняется сумме размеров всех файлов, находящихся внутри неё. При этом нужно пройтись по всей иерархии файлов и папок, находящихся внутри.

public long getFolderSize(String path) throws IOException {
    Path folder = Paths.get(path);
    return Files.walk(folder)
            .map(Path::toFile)
            .filter(File::isFile)
            .mapToLong(File::length)
            .sum();
}

Сначала создадим объект папки с помощью метода Paths.get(). В него передадим полный путь до интересующей нас папки. Этот путь мы получаем в качестве параметра нашего метода.

Затем для обхода всей иерархии файлов используем метод Files.walk(). Он возвращает поток (Stream) из элементов типа Path. Эти элементы мы преобразуем в объекты типа File с помощью метода потока map(). Затем оставляем только те элементы, которые действительно являются файлами (метод isFile()). Потом у каждого файла берём его размер (метод length()) и в конце все значения суммируем (метод sum()).