Spec-Zone.ru › Nim

std/private/osfiles

SourceEdit

Импорты

since, oserrors, oscommon, ospaths2, ossymlinks, winlean

Типы

CopyFlag = enum
  cfSymlinkAsIs,            ## Copy symlinks as symlinks
  cfSymlinkFollow,          ## Copy the files symlinks point to
  cfSymlinkIgnore            ## Ignore symlinks
Опции копирования. Source Edit
FilePermission = enum
  fpUserExec,               ## execute access for the file owner
  fpUserWrite,              ## write access for the file owner
  fpUserRead,               ## read access for the file owner
  fpGroupExec,              ## execute access for the group
  fpGroupWrite,             ## write access for the group
  fpGroupRead,              ## read access for the group
  fpOthersExec,             ## execute access for others
  fpOthersWrite,            ## write access for others
  fpOthersRead               ## read access for others

Разрешения доступа к файлу, смоделированные по UNIX.

См. также:

  • getFilePermissions
  • setFilePermissions
  • объект os: FileInfo
Source Edit

Процедуры

proc copyFile(source, dest: string; options = {cfSymlinkFollow};
              bufferSize = 16384) {....gcsafe, extern: "nos$1", tags: [
    ReadDirEffect, ReadIOEffect, WriteIOEffect], raises: [OSError], forbids: [].}

Копирует файл из source в dest, где dest.parentDir должен существовать.

В операционных системах, отличных от Windows, options определяет способ копирования файла; по умолчанию, если source является символической ссылкой, копируется файл, на который указывает символическая ссылка. options игнорируется в Windows: символические ссылки пропускаются.

В случае неудачи генерируется OSError.

В Windows эта процедура скопирует атрибуты исходного файла в целевой.

В других платформах вам нужно использовать процедуры getFilePermissions и setFilePermissions для копирования их вручную (или воспользоваться удобной процедурой copyFileWithPermissions), в противном случае dest унаследует стандартные права нового файла для пользователя.

Если dest уже существует, атрибуты файла будут сохранены, а содержимое перезаписано.

В OSX будет использован copyfile API (доступен начиная с OSX 10.5), если не используется -d:nimLegacyCopyFile.

copyFile позволяет указать bufferSize для повышения производительности ввода-вывода.

См. также:

  • Перечисление CopyFlag
  • osdirs: процедура copyDir
  • процедура copyFileWithPermissions
  • процедура tryRemoveFile
  • процедура removeFile
  • процедура moveFile
Исходный код Редактировать
proc copyFileToDir(source, dir: string; options = {cfSymlinkFollow};
                   bufferSize = 16384) {....raises: [ValueError, OSError],
    tags: [ReadDirEffect, ReadIOEffect, WriteIOEffect], forbids: [].}

Копирует файл source в директорию dir, которая должна существовать.

В операционных системах, отличных от Windows, options определяет способ копирования файла; по умолчанию, если source является символической ссылкой, копируется файл, на который указывает символическая ссылка. options игнорируется в Windows: символические ссылки пропускаются.

copyFileToDir позволяет указать bufferSize для повышения производительности ввода-вывода.

См. также:

  • Перечисление CopyFlag
  • процедура copyFile
Исходный код Редактировать
proc copyFileWithPermissions(source, dest: string;
                             ignorePermissionErrors = true;
                             options = {cfSymlinkFollow}) {....raises: [OSError],
    tags: [ReadDirEffect, ReadIOEffect, WriteIOEffect], forbids: [].}

Копирует файл из source в dest с сохранением прав доступа.

В операционных системах, отличных от Windows, options определяет способ копирования файла; по умолчанию, если source является символической ссылкой, копируется файл, на который указывает символическая ссылка. options игнорируется в Windows: символические ссылки пропускаются.

Это обёртка над процедурами copyFile, getFilePermissions и setFilePermissions в платформах, отличных от Windows.

В Windows эта процедура просто является обёрткой для copyFile, так как эта процедура уже копирует атрибуты.

В системах, отличных от Windows, права копируются после копирования самого файла, что может произойти не атомарно и привести к гонке. Если ignorePermissionErrors равно true (по умолчанию), ошибки при чтении/установке атрибутов файла будут проигнорированы, в противном случае будет вызвано OSError.

См. также:

  • Перечисление CopyFlag
  • процедура copyFile
  • osdirs: процедура copyDir
  • процедура tryRemoveFile
  • процедура removeFile
  • процедура moveFile
  • osdirs: процедура copyDirWithPermissions
Исходный код Редактировать
proc getFilePermissions(filename: string): set[FilePermission] {....gcsafe,
    extern: "nos$1", tags: [ReadDirEffect], raises: [OSError], forbids: [].}

Получает права доступа к файлу filename.

OSError генерируется в случае ошибки. В Windows проверяется только флаг readonly , остальные права доступны в любом случае.

См. также:

  • процедура setFilePermissions
  • Перечисление FilePermission
Исходный код Редактировать
proc moveFile(source, dest: string) {....gcsafe, extern: "nos$1", tags: [
    ReadDirEffect, ReadIOEffect, WriteIOEffect], raises: [OSError], forbids: [].}

Перемещает файл из source в dest.

Символические ссылки не отслеживаются: если source является символической ссылкой, перемещается она сама, а не её цель.

В случае неудачи генерируется OSError. Если dest уже существует, он будет перезаписан.

Может использоваться для переименования файлов.

См. также:

  • osdirs: процедура moveDir
  • процедура copyFile
  • процедура copyFileWithPermissions
  • процедура removeFile
  • процедура tryRemoveFile
Исходный код Редактировать
proc removeFile(file: string) {....gcsafe, extern: "nos$1", tags: [WriteDirEffect],
                                raises: [OSError], forbids: [].}

Удаляет file.

В случае неудачи генерируется OSError . Эта процедура не завершается ошибкой, если файла никогда не существовало.

В Windows игнорируется атрибут "только для чтения".

См. также:

  • osdirs: процедура removeDir
  • процедура copyFile
  • процедура copyFileWithPermissions
  • процедура tryRemoveFile
  • процедура moveFile
Исходный код Редактировать
proc setFilePermissions(filename: string; permissions: set[FilePermission];
                        followSymlinks = true) {....gcsafe, extern: "nos$1",
    tags: [ReadDirEffect, WriteDirEffect], raises: [OSError], forbids: [].}

Устанавливает права доступа к файлу filename.

Если followSymlinks установлено в true (по умолчанию) и filename указывает на символическую ссылку, права устанавливаются для файла, на который указывает символическая ссылка. followSymlinks установленное в false, является пустой операцией в Windows и некоторых POSIX системах (включая Linux), на которых lchmod либо недоступно, либо всегда завершается ошибкой, так как права символических ссылок там не соблюдаются.

OSError генерируется в случае ошибки. В Windows изменяется только флаг readonly , в зависимости от разрешения fpUserWrite.

См. также:

  • процедура getFilePermissions
  • Перечисление FilePermission
Исходный код Редактировать
proc tryRemoveFile(file: string): bool {....gcsafe, extern: "nos$1",
    tags: [WriteDirEffect], raises: [], forbids: [].}

Удаляет file.

В случае неудачи возвращает false. Ошибка не возникает, если файла изначально не существовало.

В Windows игнорирует атрибут «только для чтения».

См. также:

  • процедуру copyFile
  • процедуру copyFileWithPermissions
  • процедуру removeFile
  • процедуру moveFile
Исходный код Редактировать

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

Spec-Zone.ru

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