public Directory getLastDirectory(String path, Directory currentDir, User currentUser)
      throws FileUnknownException, PathIsTooBigException, AccessDeniedException {
    if (path.equals("/")) {
      getSlash().checkAccessEx(currentUser);
      return getSlash();
    }

    if (path.equals(".")) return currentDir;
    else if (path.equals("..")) {
      currentDir.getFather().checkAccessEx(currentUser);
      return currentDir.getFather();
    }

    Directory beforeLast = absolutePath(path, currentUser, currentDir);

    String[] tokens = path.split(PATH_DELIM);

    String name = tokens.length == 0 ? path : tokens[tokens.length - 1];

    beforeLast.checkAccessEx(currentUser);
    beforeLast.changeDirectory(name, currentUser);

    return (Directory) beforeLast.getFileByName(name);
  }
 private Directory changeDirectory(
     String directoryName, Directory currentDirectory, User currentUser)
     throws FileUnknownException, AccessDeniedException {
   currentDirectory.checkAccessEx(currentUser);
   return currentDirectory.changeDirectory(directoryName, currentUser);
 }