asyncfile
This module implements asynchronous file reading and writing.
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()
Imports
Types
Procs
proc getFileSize(f: AsyncFile): int64 {...}{.raises: [OSError], tags: [].}
- Retrieves the specified file's size. Source Edit
proc newAsyncFile(fd: AsyncFD): AsyncFile {...}{.raises: [Exception, OSError], tags: [RootEffect].}
- Creates
AsyncFile
with a previously opened file descriptorfd
. Source Edit proc openAsync(filename: string; mode = fmRead): AsyncFile {...}{. raises: [OSError, Exception], tags: [RootEffect].}
- Opens a file specified by the path in
filename
using the specified FileModemode
asynchronously. Source Edit proc readBuffer(f: AsyncFile; buf: pointer; size: int): Future[int] {...}{. raises: [ValueError, Exception], tags: [RootEffect].}
-
Read
size
bytes from the specified file asynchronously starting at the current position of the file pointer.If the file pointer is past the end of the file then zero is returned and no bytes are read into
Source Editbuf
proc read(f: AsyncFile; size: int): Future[string] {...}{. raises: [ValueError, Exception], tags: [RootEffect].}
-
Read
size
bytes from the specified file asynchronously starting at the current position of the file pointer.If the file pointer is past the end of the file then an empty string is returned.
Source Edit proc readLine(f: AsyncFile): Future[string] {...}{.raises: [Exception, ValueError], tags: [RootEffect].}
- Reads a single line from the specified file asynchronously. Source Edit
proc getFilePos(f: AsyncFile): int64 {...}{.raises: [], tags: [].}
- Retrieves the current position of the file pointer that is used to read from the specified file. The file's first byte has the index zero. Source Edit
proc setFilePos(f: AsyncFile; pos: int64) {...}{.raises: [], tags: [].}
- Sets the position of the file pointer that is used for read/write operations. The file's first byte has the index zero. Source Edit
proc readAll(f: AsyncFile): Future[string] {...}{.raises: [Exception, ValueError], tags: [RootEffect].}
- Reads all data from the specified file. Source Edit
proc writeBuffer(f: AsyncFile; buf: pointer; size: int): Future[void] {...}{. raises: [Exception], tags: [RootEffect].}
-
Writes
size
bytes frombuf
to the file specified asynchronously.The returned Future will complete once all data has been written to the specified file.
Source Edit proc write(f: AsyncFile; data: string): Future[void] {...}{.raises: [Exception], tags: [RootEffect].}
-
Writes
data
to the file specified asynchronously.The returned Future will complete once all data has been written to the specified file.
Source Edit proc setFileSize(f: AsyncFile; length: int64) {...}{.raises: [OSError], tags: [].}
- Set a file length. Source Edit
proc close(f: AsyncFile) {...}{.raises: [Exception, OSError], tags: [RootEffect].}
- Closes the file specified. Source Edit
proc writeFromStream(f: AsyncFile; fs: FutureStream[string]): owned(Future[void]) {...}{. raises: [Exception], tags: [RootEffect].}
-
Reads data from the specified future stream until it is completed. The data which is read is written to the file immediately and freed from memory.
This procedure is perfect for saving streamed data to a file without wasting memory.
Source Edit proc readToStream(f: AsyncFile; fs: FutureStream[string]): owned(Future[void]) {...}{. raises: [Exception], tags: [RootEffect].}
- Writes data to the specified future stream as the file is read. Source Edit
© 2006–2021 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/asyncfile.html