Spec-Zone.ru › Nim 1

io

This is a part of system.nim, you should not manually import it.

Импорты

since, formatfloat

Типы

File = ptr CFile
Тип, представляющий дескриптор файла. Исходный код Редактировать
FileMode = enum
  fmRead,                   ## Open the file for read access only.
  fmWrite,                  ## Open the file for write access only.
                             ## If the file does not exist, it will be
                             ## created. Existing files will be cleared!
  fmReadWrite,              ## Open the file for read and write access.
                             ## If the file does not exist, it will be
                             ## created. Existing files will be cleared!
  fmReadWriteExisting,      ## Open the file for read and write access.
                             ## If the file does not exist, it will not be
                             ## created. The existing file will not be cleared.
  fmAppend                   ## Open the file for writing only; append data
                             ## at the end.
Режим файла при открытии. Исходный код Редактировать
FileHandle = cint
Тип, представляющий дескриптор файла ОС; полезен для доступа к файлам на низком уровне. Исходный код Редактировать

Переменные

stdin: File
Стандартный поток ввода. Исходный код Редактировать
stdout: File
Стандартный поток вывода. Исходный код Редактировать
stderr: File
Стандартный поток ошибок. Исходный код Редактировать

Процедуры

proc readBuffer(f: File; buffer: pointer; len: Natural): int {...}{.
    tags: [ReadIOEffect], gcsafe, locks: 0, raises: [IOError].}
считывает len байт в буфер, указанный по адресу buffer. Возвращает фактическое количество считанных байтов, которое может быть меньше len (если не осталось столько байтов), но не больше. Исходный код Изменить
proc readBytes(f: File; a: var openArray[int8 | uint8]; start, len: Natural): int {...}{.
    tags: [ReadIOEffect], gcsafe, locks: 0.}
считывает len байт в буфер a, начиная с позиции a[start]. Возвращает фактическое количество считанных байтов, которое может быть меньше len (если не осталось столько байтов), но не больше. Исходный код Изменить
proc readChars(f: File; a: var openArray[char]; start, len: Natural): int {...}{.
    tags: [ReadIOEffect], gcsafe, locks: 0, raises: [IOError].}

считывает len байт в буфер a, начиная с позиции a[start]. Возвращает фактическое количество считанных байтов, которое может быть меньше len (если не осталось столько байтов), но не больше.

Предупреждение: Буфер a должен быть предварительно выделен. Это можно сделать, например, с помощью newString.

Исходный код Изменить
proc write(f: File; c: cstring) {...}{.tags: [WriteIOEffect], gcsafe, locks: 0,
                                  raises: [IOError].}
Записывает значение в файл f. Может выбросить исключение IO. Исходный код Изменить
proc writeBuffer(f: File; buffer: pointer; len: Natural): int {...}{.
    tags: [WriteIOEffect], gcsafe, locks: 0, raises: [IOError].}
записывает байты из буфера, на который указывает параметр buffer в файл f. Возвращает количество фактически записанных байтов, которое может быть меньше len в случае ошибки. Исходный код Изменить
proc writeBytes(f: File; a: openArray[int8 | uint8]; start, len: Natural): int {...}{.
    tags: [WriteIOEffect], gcsafe, locks: 0.}
записывает байты из a[start..start+len-1] в файл f. Возвращает количество фактически записанных байтов, которое может быть меньше len в случае ошибки. Исходный код Изменить
proc writeChars(f: File; a: openArray[char]; start, len: Natural): int {...}{.
    tags: [WriteIOEffect], gcsafe, locks: 0, raises: [IOError].}
записывает байты из a[start..start+len-1] в файл f. Возвращает количество фактически записанных байтов, которое может быть меньше len в случае ошибки. Исходный код Изменить
proc write(f: File; s: string) {...}{.tags: [WriteIOEffect], gcsafe, locks: 0,
                                 raises: [IOError].}
Исходный код Изменить
proc close(f: File) {...}{.tags: [], gcsafe, raises: [].}
Закрывает файл. Исходный код Изменить
proc readChar(f: File): char {...}{.tags: [ReadIOEffect], raises: [IOError, EOFError].}
Считывает один символ из потока f. Не следует использовать в производительно-критичных кодах. Исходный код Изменить
proc flushFile(f: File) {...}{.tags: [WriteIOEffect], raises: [].}
Очищает буфер f. Исходный код Изменить
proc getFileHandle(f: File): FileHandle {...}{.raises: [], tags: [].}
Возвращает дескриптор файла f. Это полезно только для платформо-зависимого программирования. Обратите внимание, что в Windows это не возвращает специфичный для Windows дескриптор, а дескриптор, используемый C библиотекой, что бы это ни значило. Используйте getOsFileHandle вместо этого. Исходный код Изменить
proc getOsFileHandle(f: File): FileHandle {...}{.raises: [], tags: [].}
возвращает системный дескриптор файла f. Это полезно только для платформо-зависимого программирования. Исходный код Изменить
proc setInheritable(f: FileHandle; inheritable: bool): bool {...}{.raises: [],
    tags: [].}

управляет тем, может ли дескриптор файла унаследоваться дочерними процессами. Возвращает true при успехе. Требуется системный дескриптор файла, который можно получить с помощью getOsFileHandle.

Эта процедура не гарантируется для всех платформ. Проверьте доступность с помощью declared() <system.html#declared,untyped>.

Исходный код Изменить
proc readLine(f: File; line: var TaintedString): bool {...}{.tags: [ReadIOEffect],
    gcsafe, locks: 0, raises: [IOError].}
считывает строку текста из файла f в line. Может выбросить исключение IO. Строка текста может быть ограничена LF или CRLF. Символ(ы) новой строки не являются частью возвращаемой строки. Возвращает false если достигнут конец файла, true в противном случае. Если возвращается false, то line не содержит новых данных. Исходный код Изменить
proc readLine(f: File): TaintedString {...}{.tags: [ReadIOEffect], gcsafe, locks: 0,
                                        raises: [IOError, EOFError].}
считывает строку текста из файла f. Может выбросить исключение IO. Строка текста может быть ограничена LF или CRLF. Символ(ы) новой строки не являются частью возвращаемой строки. Исходный код Изменить
proc write(f: File; i: int) {...}{.tags: [WriteIOEffect], gcsafe, locks: 0,
                              raises: [IOError].}
Исходный код Изменить
proc write(f: File; i: BiggestInt) {...}{.tags: [WriteIOEffect], gcsafe, locks: 0,
                                     raises: [IOError].}
Исходный код Изменить
proc write(f: File; b: bool) {...}{.tags: [WriteIOEffect], gcsafe, locks: 0,
                               raises: [IOError].}
Исходный код Изменить
proc write(f: File; r: float32) {...}{.tags: [WriteIOEffect], gcsafe, locks: 0,
                                  raises: [IOError].}
Исходный код Изменить
proc write(f: File; r: BiggestFloat) {...}{.tags: [WriteIOEffect], gcsafe, locks: 0,
                                       raises: [IOError].}
Исходный код Изменить
proc write(f: File; c: char) {...}{.tags: [WriteIOEffect], gcsafe, locks: 0,
                               raises: [].}
Исходный код Изменить
proc write(f: File; a: varargs[string, `$`]) {...}{.tags: [WriteIOEffect], gcsafe,
    locks: 0, raises: [IOError].}
Исходный код Изменить
proc endOfFile(f: File): bool {...}{.tags: [], gcsafe, locks: 0, raises: [].}
Возвращает true, если f находится в конце. Исходный код Изменить
proc readAll(file: File): TaintedString {...}{.tags: [ReadIOEffect], gcsafe,
    locks: 0, raises: [IOError].}

Считывает все данные из потока file.

Выбрасывает исключение IO в случае ошибки. Ошибка возникает, если текущая позиция файла не находится в начале файла.

Исходный код Изменить
proc writeLine[Ty](f: File; x: varargs[Ty, `$`]) {...}{.inline,
    tags: [WriteIOEffect], gcsafe, locks: 0.}
записывает значения x в f и затем записывает "\n". Может выбросить исключение IO. Исходный код Изменить
proc open(f: var File; filename: string; mode: FileMode = fmRead;
          bufSize: int = -1): bool {...}{.tags: [], raises: [], gcsafe, locks: 0.}

Открывает файл с именем filename с заданным mode.

По умолчанию режим — только чтение. Возвращает true, если файл был открыт. Не выбрасывает исключений, если файл не удалось открыть.

Дескриптор файла, связанный с полученным File не наследуется.

Исходный код Изменить
proc reopen(f: File; filename: string; mode: FileMode = fmRead): bool {...}{.
    tags: [], gcsafe, locks: 0, raises: [].}

переоткрывает файл f с заданным filename и mode. Это часто используется для перенаправления переменных файлов stdin, stdout или stderr.

По умолчанию режим — только чтение. Возвращает true, если файл удалось переоткрыть.

Дескриптор файла, связанный с f не наследуется.

Исходный код Изменить
proc open(f: var File; filehandle: FileHandle; mode: FileMode = fmRead): bool {...}{.
    tags: [], raises: [], gcsafe, locks: 0.}

Создаёт File из filehandle с заданными mode.

По умолчанию режим — только чтение. Возвращает true, если файл был успешно открыт.

Переданный дескриптор файла больше не будет наследуемым.

Исходный код Изменить
proc open(filename: string; mode: FileMode = fmRead; bufSize: int = -1): File {...}{.
    raises: [IOError], tags: [].}

Открывает файл с именем filename с заданным mode.

По умолчанию режим — только чтение. Вызывает исключение IOError в случае неудачного открытия файла.

Дескриптор файла, связанный с полученным File не является наследуемым.

Исходный код Изменить
proc setFilePos(f: File; pos: int64; relativeTo: FileSeekPos = fspSet) {...}{.gcsafe,
    locks: 0, raises: [IOError], tags: [].}
Устанавливает позицию указателя файла, используемого для операций чтения/записи. Первый байт файла имеет индекс ноль. Исходный код Изменить
proc getFilePos(f: File): int64 {...}{.gcsafe, locks: 0, raises: [IOError], tags: [].}
Возвращает текущую позицию указателя файла, используемого для чтения из файла f. Первый байт файла имеет индекс ноль. Исходный код Изменить
proc getFileSize(f: File): int64 {...}{.tags: [ReadIOEffect], gcsafe, locks: 0,
                                   raises: [IOError].}
Возвращает размер файла (в байтах) f. Исходный код Изменить
proc setStdIoUnbuffered() {...}{.tags: [], gcsafe, locks: 0, raises: [].}
Настраивает stdin, stdout и stderr для работы без буферизации. Исходный код Изменить
proc readFile(filename: string): TaintedString {...}{.tags: [ReadIOEffect], gcsafe,
    locks: 0, raises: [IOError].}
Открывает файл с именем filename для чтения, вызывает readAll, и закрывает файл после этого. Возвращает строку. Вызывает исключение IO в случае ошибки. Если вам нужно вызвать это внутри макроса времени компиляции, вы можете использовать staticRead. Исходный код Изменить
proc writeFile(filename, content: string) {...}{.tags: [WriteIOEffect], gcsafe,
    locks: 0, raises: [IOError].}
Открывает файл с именем filename для записи. Затем записывает content полностью в файл и закрывает файл после этого. Вызывает исключение IO в случае ошибки. Исходный код Изменить
proc writeFile(filename: string; content: openArray[byte]) {...}{.raises: [IOError],
    tags: [WriteIOEffect].}
Открывает файл с именем filename для записи. Затем записывает content полностью в файл и закрывает файл после этого. Вызывает исключение IO в случае ошибки. Исходный код Изменить
proc readLines(filename: string; n: Natural): seq[TaintedString] {...}{.
    raises: [IOError, EOFError], tags: [ReadIOEffect].}
Читает n строк из файла с именем filename. Вызывает исключение IO в случае ошибки. Вызывает EOF, если файл не содержит как минимум n строк. Доступно во время компиляции. Строка текста может быть ограничена LF или CRLF. Символы новой строки не являются частью возвращаемых строк. Исходный код Изменить

Итераторы

iterator lines(filename: string): TaintedString {...}{.tags: [ReadIOEffect],
    raises: [IOError, IOError].}

Итерируется по любой строке в файле с именем filename.

Если файл не существует, возникает IOError. Конечные символы новой строки удаляются из итерируемых строк. Пример:

import strutils

proc transformLetters(filename: string) =
  var buffer = ""
  for line in filename.lines:
    buffer.add(line.replace("a", "0") & '\x0A')
  writeFile(filename, buffer)
Исходный код Изменить
iterator lines(f: File): TaintedString {...}{.tags: [ReadIOEffect], raises: [IOError].}

Итерируется по любой строке в файле f.

Конечные символы новой строки удаляются из итерируемых строк. Пример:

proc countZeros(filename: File): tuple[lines, zeros: int] =
  for line in filename.lines:
    for letter in line:
      if letter == '0':
        result.zeros += 1
    result.lines += 1
Исходный код Изменить

Шаблоны

template stdmsg(): File
Шаблон, который расширяется либо до stdout, либо до stderr, в зависимости от useStdoutAsStdmsg переключателя во время компиляции. Исходный код Изменить
template readLines(filename: string): seq[TaintedString] {...}{.
    deprecated: "use readLines with two arguments".}
Устарело: используйте readLines с двумя аргументами
Исходный код Изменить

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

Spec-Zone.ru

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