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