2013-07-07 3 views
0

Чтобы получить доступ к папке Appdata в Windows, я могу просто использовать %APPDATA% в имени пути и все.Appdata in Non-Windows

Описан ли этот метод как для Linux, так и для других ОС? Я знаю, что есть альтернативы использованию %APPDATA%, но мой вопрос только в том случае, если я могу использовать его там и как переводится путь.

+0

Нет прямого эквивалента AppData, нет, если вы не подсчитаете домашний каталог - обычно вы просто сохраняете свои настройки в дочернем каталоге «.whatever» в домашнем каталоге. Linux не имеет эквивалента локального/роуминга Windows/locallow. – Rup

+0

Это отлично работает для меня: \t 'открытые статические строки getAppdataDir() { \t \t Строка ОС = System.getProperty ("os.name"); \t \t если (os.toLowerCase() содержит ("окна").) { \t \t \t возвращение System.getenv ("APPDATA"); \t \t} else { \t \t return System.getProperty ("user.home"); \t \t} \t} ' – AyCe

+0

Какой тип приложения. это? НАПРИМЕР. приложение для ПК, апплет, веб-приложение. .. –

ответ

1

%APPDATA% - это только ярлык для окон. Mac эквивалент обычно ~/Library/Application Support, но пользовательская информация находится в ~\Library\Preferences, а эквивалент linux зависит от конкретного приложения. Например, данные Chrome обычно находятся в ~\.Chrome для linux.

+0

И что произойдет, если бы у меня был код, создающий файл «% APPDATA%/Subfolder/file.txt» с помощью этого точного пути в Linux? – AyCe

+0

Скорее всего, это будет «FileNotFoundException» – Epicblood

+0

Оберните его проверкой ОС, чтобы он выполнялся только в том случае, если он находится в окнах, я использую 'String osName = System.getProperty (« os.name »);' и затем проверяем, является ли osName содержит 'Windows', делая что-то вроде' if (osName.toLowerCase(). contains ("windows") {// blablabla} ' – Epicblood