Статьи
YouTube-канал

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

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()).


Облако тэгов

Kotlin, Java, Java 16, Java 11, Java 10, Java 9, Java 8, Spring, Spring Boot, Spring Data, SQL, PostgreSQL, Oracle, Hibernate, Collections, Stream API, многопоточность, ввод-вывод, Apache, maven, gradle, JUnit, YouTube, новости, ООП, алгоритмы, головоломки, rest, GraphQL, Excel, XML, json, yaml

Последние статьи


Комментарии

Добавить комментарий

×

devmark.ru