#java #android #windows #linux #directory
#java #Android #Windows #linux #каталог
Вопрос:
Я пишу кроссплатформенное java-приложение, и мне нужно место, где я могу хранить некоторое количество файлов. Эти файлы будут использоваться другим java-приложением, которое может запускаться под другим пользователем. Это означает, что я не могу использовать:
System.getProperty("user.home");
поскольку у меня может не быть разрешений на чтение / запись этих файлов. Мне нужен какой-то способ получить не зависящую от пользователя папку, в которой каждое приложение может создавать / читать / удалять файлы (что-то вроде «C:ProgramData «для Windows).
Существует ли кроссплатформенный способ получения такой папки (по крайней мере, для Windows и Linux), или, если ее нет, какой наилучший способ получить такие папки для Windows (должен работать на XP-7), Linux и Android.
Приветствуются любые кусочки головоломки.
Ответ №1:
Я не знаю такой кроссплатформенной папки, которая дополнительно доступна для чтения всем пользователям. Но вы можете:
- Определите конкретную папку для каждой ОС,
commons-lang
это может помочь вам определить платформу (см. SystemUtils) - Проверьте, доступна ли папка для чтения / записи для текущего пользователя во время запуска приложения.
Использование центральной конфигурации (где для этой установки определена папка обмена данными) также может быть вариантом, но это зависит от упаковки вашего проекта.