Spec-Zone.ru › Nim

std/dirs

Source Edit

Этот модуль реализует обработку каталогов.

Импорты

paths, osdirs

Процедуры

proc createDir(dir: Path) {.inline, ...tags: [WriteDirEffect, ReadDirEffect],
                            raises: [OSError, IOError], forbids: [].}

Создаёт каталог dir.

Каталог может содержать несколько подкаталогов, которые ещё не существуют. Полный путь создаётся. Если это не удаётся, генерируется исключение OSError.

Процедура не завершается ошибкой, если каталог уже существует, так как в большинстве случаев это не указывает на ошибку.

См. также:

  • процедуру removeDir
  • процедуру existsOrCreateDir
  • процедуру moveDir
Source Edit
proc dirExists(dir: Path): bool {.inline, ...tags: [ReadDirEffect], sideEffect,
                                  ...raises: [], forbids: [].}
Возвращает true, если каталог dir существует. Если dir является файлом, возвращается false. Следует за символическими ссылками. Source Edit
proc existsOrCreateDir(dir: Path): bool {.inline,
    ...tags: [WriteDirEffect, ReadDirEffect], raises: [OSError, IOError],
    forbids: [].}

Проверяет, существует ли каталог dir, и создаёт его в противном случае.

Не создаёт родительские каталоги (генерирует исключение OSError, если родительские каталоги не существуют). Возвращает true, если каталог уже существует, и false, в противном случае.

См. также:

  • процедуру removeDir
  • процедуру createDir
  • процедуру moveDir
Source Edit
proc moveDir(source, dest: Path) {.inline, ...tags: [ReadIOEffect, WriteIOEffect],
                                   raises: [OSError, IOError], forbids: [].}

Перемещает каталог из source в dest.

Символические ссылки не отслеживаются: если source содержит символические ссылки, они сами перемещаются, а не их целевые объекты.

Если это не удаётся, генерируется исключение OSError.

См. также:

  • процедуру moveFile
  • процедуру removeDir
  • процедуру existsOrCreateDir
  • процедуру createDir
Source Edit
proc removeDir(dir: Path; checkDir = false) {.inline,
    ...tags: [WriteDirEffect, ReadDirEffect], raises: [OSError], forbids: [].}

Удаляет каталог dir, включая все подкаталоги и файлы в dir (рекурсивно).

Если это не удаётся, генерируется исключение OSError. Это не приводит к ошибке, если каталог никогда не существовал в первую очередь, если только checkDir = true.

См. также:

  • процедуру removeFile
  • процедуру existsOrCreateDir
  • процедуру createDir
  • процедуру moveDir
Source Edit
proc setCurrentDir(newDir: Path) {.inline, ...tags: [], raises: [OSError],
                                   forbids: [].}

Устанавливает текущий рабочий каталог; OSError генерируется, если newDir не может быть установлен.

См. также:

  • процедуру getCurrentDir
Source Edit

Итераторы

iterator walkDir(dir: Path; relative = false; checkDir = false;
                 skipSpecial = false): tuple[kind: PathComponent, path: Path] {.
    ...tags: [ReadDirEffect], raises: [OSError], forbids: [].}

Обходит каталог dir и возвращает каждый каталог или файл в dir. Возвращается тип компонента и полный путь для каждого элемента.

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

  • Если relative равно true (по умолчанию: false), результирующий путь сокращается, чтобы быть относительным к dir, в противном случае возвращается полный путь.
  • Если checkDir равно true, OSError генерируется, когда dir не существует.
  • Если skipSpecial равно true, то (кроме всех каталогов) на Unix будут возвращаться только обычные файлы (без специальных объектов «файл», таких как FIFO, файлы устройств и т. д.).
Source Edit
iterator walkDirRec(dir: Path; yieldFilter = {pcFile}; followFilter = {pcDir};
                    relative = false; checkDir = false; skipSpecial = false): Path {.
    ...tags: [ReadDirEffect], raises: [OSError], forbids: [].}

Рекурсивно обходит каталог dir и возвращает каждый файл или каталог в dir.

Параметры relative, checkdir, skipSpecial описаны в описании итератора walkDir.

Предупреждение: Изменение структуры каталога во время обхода итератором может привести к неопределённому поведению!

Обход рекурсивный. followFilter контролирует поведение итератора:

yieldFilter значение
pcFile возвращает реальные файлы (по умолчанию)
pcLinkToFile возвращает символические ссылки на файлы
pcDir возвращает реальные каталоги
pcLinkToDir возвращает символические ссылки на каталоги
followFilter значение
pcDir отслеживает реальные каталоги (по умолчанию)
pcLinkToDir отслеживает символические ссылки на каталоги

См. также:

  • итератор walkDir
Source Edit

© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/dirs.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API