There is a comprehensive set of commands for file manipulation. We will cover only the some of the more important ones here.
To open a file the
open command is used:
open name ?access?
where name is a string containing the filename, and the option access parameter contains a string of access flags, in the UNIX style. The return result is a handle to the open file.
If access is not present then the access permissions default to
"r", which means open for reading only.
The command returns a file handle that can be used with other commands.
An example of the use of the
open command is
set fid [open "myfile" "r+"]
which means open the file
myfile for both reading and writing
and set the variable
fid to the file handle returned.
To close a file simply use
will close the file that has the file handle stored in the variable
To read from a file, the
read command is used:
read fileId numBytes
which reads numBytes bytes from the file attached to file handle fileId, and returns the bytes actually read.
To read a single line from a file use
gets fileId ?varName?
which reads a line from the file attached to file handle fileId but chops off the trailing newline. If variable varName is specified then the string read in is stored there and the number of bytes is returned by the command. If the variable is not specified, then the command returns the string only.
To write to a file, use
puts ?-nonewline? ?fileId? string
which outputs the string string. If the file handle fileId
is present then the string is output to that file; otherwise, it is
stdout. If the switch -nonewline is present
then a trailing newline is not output.
To check if the end of a file has been reached, use
which, given a file handle fileId returns 1 if the end has been reached, and 0 otherwise.
The are a host of other commands over files and processes, which we will not go into here.
(For extra information on file I/O commands, refer to the Tcl manual pages.)