Java: System.getenv ("APPDATA") возвращает ноль, что теперь? - PullRequest
3 голосов
/ 23 апреля 2011

Я только что узнал, что когда Java-программа запускается в Windows через «Run As ...» (из контекстного меню исполняемого файла) от имени другого пользователя, вызов System.getenv("APPDATA") вернет null, а необычная папка с данными приложения.

Теперь, я в некотором роде нуб, когда дело доходит до папок Windows и тому подобного, поэтому мой вопрос: как мне справиться с этой ситуацией, когда моя программа должна иметь возможностьхранить свои данные где-нибудь для правильной работы?Более конкретно, если System.getenv("APPDATA") возвращает null, могу ли я даже разрешить хранить какие-либо данные вообще, и если да, то где?Заранее спасибо!

Ответы [ 3 ]

3 голосов
/ 23 апреля 2011

Хорошо, я решил собственную проблему, используя JNA:

com.sun.jna.platform.win32.Shell32Util.getFolderPath(int nFolder)

, где nFolder = 0x001a для папки данных приложения и nFolder = 0x001c для локальной папки данных приложения.В Windows XP выводом является

C: \ Documents and Settings \ [имя пользователя] \ Application Data

C: \ Documents and Settings \ [имя пользователя] \ Local Settings \ ApplicationДанные

Самое главное, это не возвращает null при запуске программы через Run As.

2 голосов
/ 29 июня 2012

Также, если вы установите переменную окружения в windows, я заметил, что java не подхватывает ее, пока не перезапустит ОС.

2 голосов
/ 23 апреля 2011

Да, вам всегда разрешено хранить данные. Вы можете использовать temp directory для хранения ваших данных. Вы можете получить временный каталог по System.getProperty("java.io.tmpdir");.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...