javafilefilesystemsguavaapache-commons

Resolve a path name with .. parent directory specifiers ("dot dot") without resolving symlinks


Given a path like /a/./b/c/../d, I would like to remove all the "current directory" indicators (i.e., period) and "parent directory" indicators (i.e., ..), giving a/b/d.

I could use File.getCanonicalPath(), but that also resolves symlinks, which I don't want.

Any simple way? That is, simpler than writing a tokenizer and handling it all myself.

Bonus points if you can tell me what the right name for '.' and '..' are in this context.


Solution

  • You can use FilenameUtils.normalize() in the Apache Commons IO library - see javadoc here.

    "Dot" (.) is the current directory and "dot dot" (..) is the parent directory - read up on unix directories.