Files
Reading from a File
Suppose we have a file in the same directory as our nim program, kittens.txt
with the following contents.
Spitfire
Vivian
Motor
We can use the readFile
proc to read the entire file into memory.
# This will read the entire file into the string entireFile
let entireFile = readFile("kittens.txt")
echo entireFile # prints the entire file
We can also read the lines of a file by opening a File
object and using the readLine
proc to read individual lines.
proc readKittens() =
let f = open("kittens.txt")
# Close the file object when you are done with it
defer: f.close()
let firstLine = f.readLine()
echo firstLine # prints Spitfire
readKittens()
Writing to a File
We can write a string to a file using the writeFile
proc.
let text = "Cats are very cool!"
writeFile("cats.txt", text)
This will create a file on the system named cats.txt
containing “Cats are very cool!”
We can also write a file line by line using a File
object and the writeLine
proc.
proc writeCatActivities() =
let lines = ["Play", "Eat", "Sleep"]
# The fmWrite constant specifies that we are opening the file for writing.
let f = open("catactivities.txt", fmWrite)
defer: f.close()
for line in lines:
f.writeLine(line)
writeCatActivities()
After running this program there should be a file called catactivities.txt
with the following contents.
Play
Eat
Sleep