An abstraction for filesystem paths. The differences between Path, File, and Directory are primarily to communicate intent. Since the filesystem can change at any time, there is no way to reliably associate Files only with files and so on. Any Path can be converted to a File or Directory (and thus gain access to the additional entity specific methods) by calling toFile or toDirectory, which has no effect on the filesystem.
Also available are createFile and createDirectory, which attempt to create the path in question.
Avoiding any shell/path issues by only using alphanumerics.