Source: https://www.eng.tau.ac.il/~shavitt/courses/Clab/FileIO.pdf