25 января 2020
Тэги: Java, Stream API, алгоритмы, файлы.
При работе с файловой системой может потребоваться вычислить размер папки (folder) с лежащими в ней файлами. Как известно, директория – это лишь логический раздел на файловой системе, поэтому её размер равняется сумме размеров всех файлов, находящихся внутри неё. При этом нужно пройтись по всей иерархии файлов и папок, находящихся внутри.
Сначала создадим объект папки с помощью метода Paths.get(). В него передадим полный путь до интересующей нас папки. Этот путь мы получаем в качестве параметра нашего метода.
Затем для обхода всей иерархии файлов используем метод Files.walk(). Он возвращает поток (Stream) из элементов типа Path. Эти элементы мы преобразуем в объекты типа File с помощью метода потока map(). Затем оставляем только те элементы, которые действительно являются файлами (метод isFile()). Потом у каждого файла берём его размер (метод length()) и в конце все значения суммируем (метод sum()).
Kotlin, Java, Spring, Spring Boot, Spring Data, SQL, PostgreSQL, Oracle, H2, Linux, Hibernate, Collections, Stream API, многопоточность, чат-боты, нейросети, файлы, devops, Docker, Nginx, Apache, maven, gradle, JUnit, YouTube, новости, руководство, ООП, алгоритмы, головоломки, rest, GraphQL, Excel, XML, json, yaml.