return System.getProperty ("user.dir") + separatorChar + path;
{ String currentDir = System.getProperty("user.dir");  if (currentDir.endsWith(separator)) return currentDir + path; else return currentDir + separator + path; }
  public String getAbsolutePath()  {    if (isAbsolute())      return path;    else if (separatorChar == '\\'              && path.length() > 0 && path.charAt (0) == '\\')      {        // On Windows, even if the path starts with a '\\' it is not        // really absolute until we prefix the drive specifier from        // the current working directory to it.        return System.getProperty ("user.dir").substring (0, 2) + path;      }    else if (separatorChar == '\\'              && path.length() > 1 && path.charAt (1) == ':'             && ((path.charAt (0) >= 'a' && path.charAt (0) <= 'z')                 || (path.charAt (0) >= 'A' && path.charAt (0) <= 'Z')))      {        // On Windows, a process has a current working directory for        // each drive and a path like "G:foo\bar" would mean the         // absolute path "G:\wombat\foo\bar" if "\wombat" is the         // working directory on the G drive.        String drvDir = null;        try          {            drvDir = new File (path.substring (0, 2)).getCanonicalPath();          }        catch (IOException e)          {            drvDir = path.substring (0, 2) + "\\";          }                // Note: this would return "C:\\." for the path "C:.", if "\"        // is the working folder on the C drive, but this is         // consistent with what Sun's JRE 1.4.1.01 actually returns!        if (path.length() > 2)          return drvDir + '\\' + path.substring (2, path.length());        else          return drvDir;      }    else      return System.getProperty ("user.dir") + separatorChar + path;  }