Общее место для создания файлов на различных платформах (не зависящих от пользователя)

#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)
  • Проверьте, доступна ли папка для чтения / записи для текущего пользователя во время запуска приложения.

Использование центральной конфигурации (где для этой установки определена папка обмена данными) также может быть вариантом, но это зависит от упаковки вашего проекта.