0Pricing
Swift Academy · Урок

Управление каталогами

Создавайте, просматривайте и удаляйте каталоги.

«Управление каталогами» — бесплатный урок Swift Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.

Управление каталогами

FileManager — это основной объект для создания, просмотра, перемещения и удаления файлов и папок.

Общий FileManager

Для большинства операций используйте FileManager.default. Он предоставляет общий экземпляр, безопасный для работы из разных потоков.

import Foundation

let fm = FileManager.default
print("Got the default file manager")

Создание каталога

createDirectory(at:withIntermediateDirectories:) создаёт папку и при необходимости также создаёт отсутствующие родительские каталоги.

import Foundation

let fm = FileManager.default
let dir = URL(fileURLWithPath: "/tmp/myapp/cache")
try? fm.createDirectory(at: dir, withIntermediateDirectories: true)
print("Directory created")

Проверка существования

fileExists(atPath:) сообщает, существует ли путь, а флаг, передаваемый для изменения, указывает, является ли он каталогом.

import Foundation

let fm = FileManager.default
var isDir: ObjCBool = false
let exists = fm.fileExists(atPath: "/tmp", isDirectory: &isDir)
print("Exists: \(exists), isDir: \(isDir.boolValue)")

Просмотр содержимого

contentsOfDirectory(at:includingPropertiesForKeys:) возвращает URL-адреса внутри каталога.

import Foundation

let fm = FileManager.default
let dir = URL(fileURLWithPath: "/tmp")
if let items = try? fm.contentsOfDirectory(at: dir, includingPropertiesForKeys: nil) {
    print("Item count: \(items.count)")
}

Просмотр только имён

Вариант contentsOfDirectory(atPath:), принимающий путь, возвращает обычные строки с именами файлов, если полные URL-адреса не нужны.

import Foundation

let fm = FileManager.default
if let names = try? fm.contentsOfDirectory(atPath: "/tmp") {
    print("Names count: \(names.count)")
}

Удаление элементов

removeItem(at:) удаляет файл или всё дерево каталогов. Используйте этот метод с осторожностью.

import Foundation

let fm = FileManager.default
let url = URL(fileURLWithPath: "/tmp/myapp/cache/old.txt")
try? fm.removeItem(at: url)
print("Removed item if it existed")

Перемещение и переименование

moveItem(at:to:) перемещает или переименовывает элемент, а copyItem(at:to:) создаёт копию файла.

import Foundation

let fm = FileManager.default
let src = URL(fileURLWithPath: "/tmp/a.txt")
let dst = URL(fileURLWithPath: "/tmp/b.txt")
try? fm.moveItem(at: src, to: dst)
print("Moved if source existed")

Рекурсивный обход

FileManager.DirectoryEnumerator рекурсивно обходит всё поддерево, возвращая URL-адрес каждого вложенного элемента.

import Foundation

let fm = FileManager.default
let root = URL(fileURLWithPath: "/tmp")
if let e = fm.enumerator(at: root, includingPropertiesForKeys: nil) {
    var count = 0
    for case _ as URL in e { count += 1; if count > 5 { break } }
    print("Walked some entries: \(count)")
}

Атрибуты файлов

attributesOfItem(atPath:) возвращает метаданные, например размер и дату изменения, в словаре.

import Foundation

let fm = FileManager.default
if let attrs = try? fm.attributesOfItem(atPath: "/tmp"),
   let size = attrs[.size] {
    print("Has size attribute: \(size)")
}

Обработка сбоев

Операции с каталогами вызывают ошибку при проблемах с разрешениями или отсутствующем пути. Оберните их в do/catch, чтобы корректно обработать такие ситуации.

import Foundation

let fm = FileManager.default
do {
    try fm.removeItem(at: URL(fileURLWithPath: "/no/such/file"))
} catch {
    print("Remove failed: \(error.localizedDescription)")
}

Быстрая проверка

Какой вариант заставляет createDirectory также создавать отсутствующие родительские каталоги?

Итоги

FileManager.default создаёт каталоги с помощью createDirectory, проверяет их существование с помощью fileExists, просматривает содержимое через contentsOfDirectory, удаляет элементы с помощью removeItem, а также перемещает и копирует их. Вы также выполнили обход поддеревьев и прочитали атрибуты. Далее: каталоги песочницы приложения.

Часто задаваемые вопросы

Урок «Управление каталогами» бесплатный?

Да — полный текст урока «Управление каталогами» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.

Чему я научусь в уроке «Управление каталогами»?

Создавайте, просматривайте и удаляйте каталоги. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Swift Academy?

Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Управление каталогами»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Swift Academy?

Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. URL и пути к файлам
  2. Чтение и запись данных
  3. Управление каталогами
  4. Каталоги песочницы приложения
← Назад к Swift Academy