Programs that interact with the file system are a classical challenge to the testable software. Using directly file system primitives such as the System.IO.File class makes the code less testable since it hardcodes a dependency on the state of the physical file system at the time tests are executed.