Статьи Утилиты Telegram YouTube RuTube Отзывы

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

25 января 2020

Тэги: Java, 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, Spring, Spring Boot, Spring Data, SQL, PostgreSQL, Oracle, Linux, Hibernate, Collections, Stream API, многопоточность, файлы, Nginx, Apache, maven, gradle, JUnit, YouTube, новости, руководство, ООП, алгоритмы, головоломки, rest, GraphQL, Excel, XML, json, yaml.

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


Комментарии

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

×

devmark.ru