the ..
denote a parent directory; .
denote this directory.
Having this as valid is another good reason why you should use getCanonicalPath()
vs getAbsolutePath()
For example: Lets say your file is under /folder1/folder2 directory
then
File f = new File("/folder1/folder2/folder3/../<your file>");
f.getCanonicalPath() ==> /folder1/folder2/<your file>
f.getAbsolutePath() ==> /folder1/folder2/folder3/../<your file>