Spec-Zone.ru › Nim 1

asyncfile

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

import 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
  fd: AsyncFD
  offset: int64
Исходный код Редактировать

Процедуры

proc getFileSize(f: AsyncFile): int64 {...}{.raises: [OSError], tags: [].}
Получает размер указанного файла. Исходный код Редактировать
proc newAsyncFile(fd: AsyncFD): AsyncFile {...}{.raises: [Exception, OSError],
    tags: [RootEffect].}
Создаёт AsyncFile с предварительно открытым дескриптором файла fd. Исходный код Редактировать
proc openAsync(filename: string; mode = fmRead): AsyncFile {...}{.
    raises: [OSError, Exception], tags: [RootEffect].}
Асинхронно открывает файл, указанный по пути в filename, используя указанный режим файла mode. Исходный код Редактировать
proc readBuffer(f: AsyncFile; buf: pointer; size: int): Future[int] {...}{.
    raises: [ValueError, Exception], tags: [RootEffect].}

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

Если указатель файла находится за концом файла, то возвращается ноль и байты не считываются в buf

Исходный код Редактировать
proc read(f: AsyncFile; size: int): Future[string] {...}{.
    raises: [ValueError, Exception], tags: [RootEffect].}

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

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

Исходный код Редактировать
proc readLine(f: AsyncFile): Future[string] {...}{.raises: [Exception, ValueError],
    tags: [RootEffect].}
Асинхронно считывает одну строку из указанного файла. Исходный код Редактировать
proc getFilePos(f: AsyncFile): int64 {...}{.raises: [], tags: [].}
Получает текущую позицию указателя файла, используемого для чтения из указанного файла. Первый байт файла имеет индекс ноль. Исходный код Редактировать
proc setFilePos(f: AsyncFile; pos: int64) {...}{.raises: [], tags: [].}
Устанавливает позицию указателя файла, используемого для операций чтения/записи. Первый байт файла имеет индекс ноль. Исходный код Редактировать
proc readAll(f: AsyncFile): Future[string] {...}{.raises: [Exception, ValueError],
    tags: [RootEffect].}
Считывает все данные из указанного файла. Исходный код Редактировать
proc writeBuffer(f: AsyncFile; buf: pointer; size: int): Future[void] {...}{.
    raises: [Exception], tags: [RootEffect].}

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

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

Исходный код Редактировать
proc write(f: AsyncFile; data: string): Future[void] {...}{.raises: [Exception],
    tags: [RootEffect].}

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

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

Исходный код Редактировать
proc setFileSize(f: AsyncFile; length: int64) {...}{.raises: [OSError], tags: [].}
Установка длины файла. Исходный код Редактировать
proc close(f: AsyncFile) {...}{.raises: [Exception, OSError], tags: [RootEffect].}
Закрывает указанный файл. Исходный код Редактировать
proc writeFromStream(f: AsyncFile; fs: FutureStream[string]): owned(Future[void]) {...}{.
    raises: [Exception], tags: [RootEffect].}

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

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

Исходный код Редактировать
proc readToStream(f: AsyncFile; fs: FutureStream[string]): owned(Future[void]) {...}{.
    raises: [Exception], tags: [RootEffect].}
Записывает данные в указанный будущий поток по мере чтения файла. Исходный код Редактировать

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

Spec-Zone.ru

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