Ответ 1
Если текущий каталог приложения. Если, например, вы создаете файл с помощью
new FileOutputStream("myfile")
то он создается в "текущем" каталоге, который можно получить, вызвав
System.getProperty("user.dir");
Однако, если вы меняете текущий каталог, вызывая собственные методы (очень маловероятно!), свойство не обновляется. Его можно рассматривать как начальный текущий каталог приложения.
Если вы запустите свое Java-приложение в пакетном файле и дважды щелкните по ссылке на него, текущий каталог будет каталогом, в котором находится командный файл, но это может быть изменено в ссылке.
Если вы запустите свое Java-приложение из командной строки, вы уже знаете каталог, в котором находитесь.
Если вы запускаете свое Java-приложение из IDE, текущий каталог обычно является корнем проекта, но обычно его можно настроить в конфигурации запуска.
ОБНОВЛЕНИЕ 2017-08:
Вы также можете найти текущее правильное местоположение с помощью new File(".").getAbsolutePath()
.