Каталоги, пути и FileSystemEntity
Перемещайтесь по файловой системе и изучайте её
«Каталоги, пути и FileSystemEntity» — бесплатный урок Dart Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Dart Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Dart Academy содержит 4 уроков всего.
Класс Directory
Подобно тому как File обозначает файл, класс Directory обозначает папку. Вы создаёте его из строки пути, после чего папку можно просматривать или создавать.
final dir = Directory('logs');Создание папки
Вызовите create, чтобы создать папку. Добавьте recursive: true — и Dart за один раз создаст все отсутствующие родительские папки.
await dir.create(recursive: true);Где выполняется программа
Нужна папка, из которой запустилась программа? Directory.current возвращает рабочий каталог — основу для относительных путей.
print(Directory.current.path);Список содержимого папки
Используйте list, чтобы получить поток содержимого папки. Каждое событие представляет объект файловой системы, который можно проверять по одному.
await for (final e in dir.list()) print(e.path);Рекурсивный обход
Передайте recursive: true в list, чтобы обойти также все вложенные папки и посетить всё дерево внутри каталога.
dir.list(recursive: true);FileSystemEntity — родительский тип
Файлы и каталоги оба расширяют FileSystemEntity. Благодаря этому общему базовому типу list может передавать объекты обоих видов в одном потоке.
Определение типа объекта
Чтобы отличить файл от папки, используйте FileSystemEntity.isDirectory или проверьте тип объекта. Это делает ветвления в циклах безопасными.
if (await FileSystemEntity.isDirectory(e.path)) {}Безопасное объединение путей
Не объединяйте пути обычными строками. Пакет path соединяет части, используя правильный разделитель для каждой платформы.
import 'package:path/path.dart' as p;Построение пути
Вызовите p.join для каждого сегмента и получите правильный путь для Windows, macOS и Linux.
final full = p.join('data', 'users', 'a.txt');Разбор пути на части
Разберите путь на части с помощью таких вспомогательных функций, как p.basename для имени файла и p.dirname для его папки.
print(p.basename('/data/a.txt'));Получение расширения
Нужен только суффикс? p.extension возвращает его вместе с точкой, поэтому фильтровать файлы по типу очень просто.
print(p.extension('photo.png'));Быстрая проверка
Вам нужен кроссплатформенный путь из нескольких сегментов. Как сделать это безопасно?
Итоги
Вы умеете создавать папки, рекурсивно просматривать их содержимое, отличать файлы от каталогов и безопасно строить пути с помощью пакета path.
Часто задаваемые вопросы
Урок «Каталоги, пути и FileSystemEntity» бесплатный?
Да — полный текст урока «Каталоги, пути и FileSystemEntity» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Dart Academy, подпишись на CoddyKit PRO. Курс Dart Academy содержит 4 уроков всего.
Чему я научусь в уроке «Каталоги, пути и FileSystemEntity»?
Перемещайтесь по файловой системе и изучайте её Ты практикуешь Dart Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Dart Academy?
Предыдущий опыт не требуется. Dart Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Каталоги, пути и FileSystemEntity»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Dart Academy?
Да. Каждый урок Dart Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Чтение и запись файлов
- Каталоги, пути и FileSystemEntity
- Потоковая обработка больших файлов
- Stdin, Stdout и аргументы процесса