Task

Load the entire contents of some text file as a single string variable.

If applicable, discuss: encoding selection, the possibility of memory-mapping.

Of course, in practice one should avoid reading an entire file at once
if the file is large and the task can be accomplished incrementally instead
(in which case check File IO);
this is for those cases where having the entire file is actually what is wanted.




[indent=4]
/*
   Read entire file, in Genie
 
   valac readEntireFile.gs
   ./readEntireFile [filename]
*/
 
init
 
    fileName:string
    fileContents:string
    fileName = (args[1] is null) ? "readEntireFile.gs" : args[1]
 
    try
        FileUtils.get_contents(fileName, out fileContents)
    except exc:Error
        print "Error: %s", exc.message
        return
 
    stdout.printf("%d bytes read from %s\n", fileContents.length, fileName)