mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 09:24:36 +00:00
* Add MemMapFileStream * Added tests * Fixed bug in memfiles (zero index for string) * Added flush to changelog * Attempt to fix Win's nuances * Fix attempt to fix * Continue... * And again... * Reworked tests (all for win on Win) * Fixes in flush (Win) * Replace fn vars to consts * Added the attempts parameter to the flush * Replace while to for * Move to memfiles * Use Natural instead of uint * Better error messages for append mode. Handle specific cases.
54 lines
1.4 KiB
Nim
54 lines
1.4 KiB
Nim
discard """
|
|
file: "tmemmapstreams.nim"
|
|
output: '''Created size: 10
|
|
Position after writing: 5
|
|
Position after writing one char: 6
|
|
Peeked data: Hello
|
|
Position after peeking: 0
|
|
Readed data: Hello!
|
|
Position after reading line: 7
|
|
Position after setting position: 6
|
|
Readed line: Hello!
|
|
Position after reading line: 7'''
|
|
"""
|
|
import os, streams, memfiles
|
|
const
|
|
fn = "test.mmapstream"
|
|
var
|
|
mms: MemMapFileStream
|
|
|
|
if fileExists(fn): removeFile(fn)
|
|
|
|
# Create a new memory mapped file, data all zeros
|
|
mms = newMemMapFileStream(fn, mode = fmReadWrite, fileSize = 10)
|
|
mms.close()
|
|
if fileExists(fn): echo "Created size: ", getFileSize(fn)
|
|
|
|
# write, flush, peek, read
|
|
mms = newMemMapFileStream(fn, mode = fmReadWrite)
|
|
let s = "Hello"
|
|
|
|
mms.write(s)
|
|
mms.flush
|
|
echo "Position after writing: ", mms.getPosition()
|
|
mms.write('!')
|
|
mms.flush
|
|
echo "Position after writing one char: ", mms.getPosition()
|
|
mms.close()
|
|
|
|
mms = newMemMapFileStream(fn, mode = fmRead)
|
|
echo "Peeked data: ", mms.peekStr(s.len)
|
|
echo "Position after peeking: ", mms.getPosition()
|
|
echo "Readed data: ", mms.readLine
|
|
echo "Position after reading line: ", mms.getPosition()
|
|
mms.setPosition(mms.getPosition() - 1)
|
|
echo "Position after setting position: ", mms.getPosition()
|
|
|
|
mms.setPosition(0)
|
|
echo "Readed line: ", mms.readLine
|
|
echo "Position after reading line: ", mms.getPosition()
|
|
|
|
mms.close()
|
|
|
|
if fileExists(fn): removeFile(fn)
|