1 added
1 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В этом курсе мы создадим виртуальную (не настоящую) файловую систему и реализуем повседневные операции для работы с ней: подсчет свободного места, поиск файлов и директорий и другие. Эта файловая система не имеет практического применения, на ней мы будем обкатывать навыки работы с древовидными структурами данных. Обработка любых деревьев в сущности не отличается. Файловая система, каталоги товаров, адреса, родственные связи и многое другое - все эти данные можно представить в виде дерева. Подход в работе с каждым типом будет один и тот же. Научившись работать с одним деревом, вы сможете применять эти же знания в работе с другими деревьями.</p>
1
<p>В этом курсе мы создадим виртуальную (не настоящую) файловую систему и реализуем повседневные операции для работы с ней: подсчет свободного места, поиск файлов и директорий и другие. Эта файловая система не имеет практического применения, на ней мы будем обкатывать навыки работы с древовидными структурами данных. Обработка любых деревьев в сущности не отличается. Файловая система, каталоги товаров, адреса, родственные связи и многое другое - все эти данные можно представить в виде дерева. Подход в работе с каждым типом будет один и тот же. Научившись работать с одним деревом, вы сможете применять эти же знания в работе с другими деревьями.</p>
2
<p>Вот как выглядит создание дерева виртуальной файловой системы:</p>
2
<p>Вот как выглядит создание дерева виртуальной файловой системы:</p>
3
<p>Первым параметром в функции mkdir() и mkfile() передается имя создаваемой директории или файла. Вторым параметром функция mkdir() принимает список вложенных в нее файлов и директорий. Последним параметром обе функции принимают метаданные meta, о которых мы поговорим чуть позже.</p>
3
<p>Первым параметром в функции mkdir() и mkfile() передается имя создаваемой директории или файла. Вторым параметром функция mkdir() принимает список вложенных в нее файлов и директорий. Последним параметром обе функции принимают метаданные meta, о которых мы поговорим чуть позже.</p>
4
<p>В результате получается такая структура:</p>
4
<p>В результате получается такая структура:</p>
5
-
<p>Вкладывая вызовы mkdir и mkfile в другие mkdir, можно получить любую файловую структуру. Корнем в этой структуре будет директория, а в листьях могут оказаться как файлы, так и пустые директории.</p>
5
+
<p>Вкладывая вызовы mkdir и mkfile в другие mkdir, можно получи��ь любую файловую структуру. Корнем в этой структуре будет директория, а в листьях могут оказаться как файлы, так и пустые директории.</p>
6
<p>Эта структура виртуальная, то есть реального создания файлов и директорий не происходит. Вся информация о файловой системе находится в переменной tree. Если ее распечатать на экран, то мы увидим следующее содержимое:</p>
6
<p>Эта структура виртуальная, то есть реального создания файлов и директорий не происходит. Вся информация о файловой системе находится в переменной tree. Если ее распечатать на экран, то мы увидим следующее содержимое:</p>
7
<p>Это внутренняя реализация файлового дерева. Она состоит из двух типов узлов: директорий и файлов.</p>
7
<p>Это внутренняя реализация файлового дерева. Она состоит из двух типов узлов: директорий и файлов.</p>
8
<p>Представление директории:</p>
8
<p>Представление директории:</p>
9
<p>Представление файла:</p>
9
<p>Представление файла:</p>
10
<p>У файлов и директорий есть имена, это общая часть. Свойство type определяет тип узла и с его помощью можно понять, что перед нами во время обработки этого дерева. meta - объект с произвольными данными, например, размером, датой создания и так далее. Свойства задаются во время создания узлов:</p>
10
<p>У файлов и директорий есть имена, это общая часть. Свойство type определяет тип узла и с его помощью можно понять, что перед нами во время обработки этого дерева. meta - объект с произвольными данными, например, размером, датой создания и так далее. Свойства задаются во время создания узлов:</p>
11
<p>Метаданные понадобятся функциям, которые анализируют дерево, например считают занятое место.</p>
11
<p>Метаданные понадобятся функциям, которые анализируют дерево, например считают занятое место.</p>