2014-12-02 4 views
1

Приложение для Java работает на Tomcat, и я хочу создавать файлы в домашнем каталоге пользователя (например, "/home/USERNAME/").System.getProperty («user.home») на Tomcat возвращает «/ usr/share/tomcat7 /»

Способ System.getProperty("user.home") отлично работает на Windows, возвращается "C:\users\USERNAME\". Но в Linux он возвращает "/usr/share/tomcat7/", на котором у моего приложения нет разрешения. Я пробовал System.getProperty("user.name") и он возвращает "tomcat7". Я сделал обходной путь, но я не удовлетворен.

Итак, как мне получить домашний каталог пользователя, даже при работе на любой ОС и на Tomcat? Благодарю.

+0

Какой пользователь или user.home вы ожидаете от системы linux? – soilworker

+0

@soilworker, я хотел создать файл в ''/home/USERNAME/mydirectory/myfile'', но, как было сказано ниже, я не должен этого делать. – LucasBatalha

ответ

7

Данные свойства i.e: user. * Относятся к пользователю, который используется для запуска tomcat. Обычно на окнах (локальные рабочие станции) мы используем зарегистрированного пользователя для запуска tomcat. Таким образом, вы получаете правильные значения (значения, которые вы считаете правильными). Но на linux и, в частности, на средах производств, tomcats всегда запускается с использованием ограниченной учетной записи пользователя, которая обычно называется «tomcat». Таким образом, когда вы нажимаете на пользовательские. * Свойства, вы получаете значения, специфичные для переменных среды, заданных для пользователя, который работает tomcat. То, что происходит с вами, - это правильный путь. Вы не должны полагаться на эти свойства для вашего использования.

+0

Хорошо, я понимаю. Однако мне просто нужен каталог для сохранения файлов. Где я должен их создавать? – LucasBatalha

+1

Большинство людей делают это в режиме temp env. вы можете создать свое собственное свойство для таких случаев или создать общие свойства в файле catalina.properties. Google немного, чтобы найти подход, который лучше всего подходит для вас. – Nazgul

+0

Возможно, вы захотите использовать [Files.createTempDirectory] (https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#createTempDirectory-java.lang.String-java. nio.file.attribute.FileAttribute ...-). – VGR