A minor quibble; the Path.moveTo() javadoc says it throws a FileAlreadyExistsException "if the target file exists and cannot be replaced because the REPLACE_EXISTING option is not specified, or the target file is a non-empty directory." In the case of a non-empty directory, shouldn't it throw a DirectoryNotEmptyException?