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.
См. также:
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 будет использован
copyfileAPI (доступен начиная с 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для повышения производительности ввода-вывода.См. также:
Исходный код Редактировать 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, остальные права доступны в любом случае.См. также:
Исходный код Редактировать 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.См. также:
Исходный код Редактировать
proc tryRemoveFile(file: string): bool {....gcsafe, extern: "nos$1", tags: [WriteDirEffect], raises: [], forbids: [].}-
Удаляет
file.В случае неудачи возвращает
false. Ошибка не возникает, если файла изначально не существовало.В Windows игнорирует атрибут «только для чтения».
См. также:
Исходный код Редактировать
© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/osfiles.html