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