When reading from or writing to a file, a filename ending with .gz indicates the file
is/should-be gzipped for any write method, if any directories need to be created to write the
file, they should be created automatically the methods should not throw checked exceptions, if
there is an I/O problem, they throw an Error