mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
* make more standard libraries work with `nimPreviewSlimSystem` * typo * part two * Delete specutils.nim * fixes more tests * more fixes * fixes tests * fixes three more tests * add formatfloat import * fix * last
56 lines
1.3 KiB
Nim
56 lines
1.3 KiB
Nim
discard """
|
|
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
|
|
import std/syncio
|
|
|
|
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)
|