Abstraction on a file descriptor, to interact with the content of a file.
var a =File("existing_file.txt").open_r # open file for readingvar b =File("new_file.txt").open_w # open file for writing
Some useful methods on FileHandle objects:
fh.autoflush(bool) # enable/disable auto-flush modefh.binmode(encoding) # set encodingfh.line # read one line as a Stringfh.slurp # read the entire file as a Stringfh.lines # read the entire file as an Array of String objectsfh.grep { ... } # collect only the lines that match the blockfh.grep(/regex/) # collect only the lines that match the regexfh.each { ... } # iterate over each linefh.eof # true when at the end of the filefh.tell # current position in the filefh.seek(pos,whence) # jump to this position in the filefh.lock # lock the filehandlefh.unlock # unlock the filehandlefh.say(str) # write a string into the file (appending "\n")fh.print(str) # write a string into the file (without appending "\n")fh.close # close the filehandle
The special FileHandle type can be for checking if a given object is really a FileHandle object:
fh.kind_of(FileHandle) # true if `fh` is a FileHandle object
The file object to which a FileHandle refers, if any, can be obtained with fh.file, which may be nil or a File object.