Use the file reading example from the slides. Modify this program in the following ways:
1) Make it read directories recursively and output all files found in them (chose a directory for testing which does not have too much in it).
2) If a file name ends with .gz, uncompress the file as part of the processing. .gz only compresses a file, it does not contains more than one file. If you want to try this with .zip files, it becomes tricky, since there can be several files in a .zip file.
3) Make the program output a string with the contents of all files concatenated. For this, try to avoid concatenating the files first (as done now) and then append them. Try to concatenate the chunks delivered by FileIO directly.