Spec-Zone.ru › Nim

std/asyncfile

Source Edit

Этот модуль реализует асинхронное чтение и запись файлов.

import std/[asyncfile, asyncdispatch, os]

proc main() {.async.} =
  var file = openAsync(getTempDir() / "foobar.txt", fmReadWrite)
  await file.write("test")
  file.setFilePos(0)
  let data = await file.readAll()
  doAssert data == "test"
  file.close()

waitFor main()

Импорты

asyncdispatch, os, winlean

Типы

AsyncFile = ref object
Source Edit

Процедуры

proc close(f: AsyncFile) {....raises: [OSError], tags: [], forbids: [].}
Закрывает указанный файл. Source Edit
proc getFilePos(f: AsyncFile): int64 {....raises: [], tags: [], forbids: [].}
Возвращает текущую позицию указателя файла, используемого для чтения из указанного файла. Первый байт файла имеет индекс ноль. Source Edit
proc getFileSize(f: AsyncFile): int64 {....raises: [OSError], tags: [], forbids: [].}
Возвращает размер указанного файла. Source Edit
proc newAsyncFile(fd: AsyncFD): AsyncFile {....raises: [OSError], tags: [],
    forbids: [].}
Создаёт AsyncFile с предварительно открытым дескриптором файла fd. Source Edit
proc openAsync(filename: string; mode = fmRead): AsyncFile {....raises: [OSError],
    tags: [], forbids: [].}
Асинхронно открывает файл, указанный по пути в filename, используя указанный режим файла mode. Source Edit
proc read(f: AsyncFile; size: int): Future[string] {.
    ...raises: [ValueError, Exception], tags: [RootEffect], forbids: [].}

Асинхронно считывает size байтов из указанного файла, начиная с текущей позиции указателя файла. size должно быть больше нуля.

Если указатель файла прошёл конец файла, возвращается пустая строка.

Source Edit
proc readAll(f: AsyncFile): Future[string] {....stackTrace: false,
    raises: [Exception, ValueError], tags: [RootEffect], forbids: [].}
Считывает все данные из указанного файла. Source Edit
proc readBuffer(f: AsyncFile; buf: pointer; size: int): Future[int] {.
    ...raises: [ValueError, Exception], tags: [RootEffect], forbids: [].}

Асинхронно считывает size байтов из указанного файла, начиная с текущей позиции указателя файла.

Если указатель файла прошёл конец файла, возвращается ноль, и в buf не считывается ни один байт.

Source Edit
proc readLine(f: AsyncFile): Future[string] {....stackTrace: false,
    raises: [Exception, ValueError], tags: [RootEffect], forbids: [].}
Асинхронно считывает одну строку из указанного файла. Source Edit
proc readToStream(f: AsyncFile; fs: FutureStream[string]): owned(
    Future[void]) {....stackTrace: false, raises: [Exception], tags: [RootEffect],
                    forbids: [].}
Записывает данные в указанный будущий поток по мере чтения из файла. Source Edit
proc setFilePos(f: AsyncFile; pos: int64) {....raises: [], tags: [], forbids: [].}
Устанавливает позицию указателя файла, используемого для операций чтения/записи. Первый байт файла имеет индекс ноль. Source Edit
proc setFileSize(f: AsyncFile; length: int64) {....raises: [OSError], tags: [],
    forbids: [].}
Установить длину файла. Source Edit
proc write(f: AsyncFile; data: string): Future[void] {....raises: [Exception],
    tags: [RootEffect], forbids: [].}

Асинхронно записывает data в указанный файл.

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

Source Edit
proc writeBuffer(f: AsyncFile; buf: pointer; size: int): Future[void] {.
    ...raises: [Exception], tags: [RootEffect], forbids: [].}

Асинхронно записывает size байтов из buf в указанный файл.

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

Source Edit
proc writeFromStream(f: AsyncFile; fs: FutureStream[string]): owned(
    Future[void]) {....stackTrace: false, raises: [Exception], tags: [RootEffect],
                    forbids: [].}

Читает данные из указанного будущего потока до его завершения. Прочитанные данные сразу записываются в файл и освобождаются из памяти.

Эта процедура идеально подходит для сохранения потоковых данных в файл без потери памяти.

Source Edit

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

Spec-Zone.ru

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