An abstract representation of a file that can be access through an {@link OverthereConnection}. It could be a local file or a remote file. It could be accessed from the local machine or through some remote connection methods (e.g. SFTP, CIFS) or read from a repository. A file object can represent a regular file, a directory or some other filesystem object such as links, symbolic links, pipes. It can also represent non-existent file.
All methods in this interface may throw a {@link RuntimeIOException} if an error occurs. Checked {@link IOException IOExceptions} are never thrown.