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.
Note: This library is considered experimental and should not be used unless you know what you are doing.