Где мое настольное приложение Java должно кэшировать загруженные ресурсы?

У меня есть настольное приложение Java, которое загружает от десятков до сотен МБ изображений и музыкальных данных в рамках своей обычной работы. Он поддерживает дисковый кеш этих данных. Если часть или весь кеш удалены, приложение заметит и повторно загрузит недостающие данные.

Этому приложению 20 лет, и исторически оно размещало данные в скрытом каталоге (~/.myapp) под user.home. Я планирую обновление, и мне интересно, есть ли канонические места для хранения данных кэша приложений для Windows, MacOS и Linux, и если да, то есть ли стандартные способы доступа к этим путям из Java.

Единственные известные мне прецеденты — это Gradle и IntelliJ, оба Java-приложения для настольных компьютеров. Gradle делает то, что делает мое приложение в настоящее время; он создает каталог ~/.gradle и сбрасывает туда данные. IntelliJ, по-видимому, пытается использовать более канонические пути в выпуске 2020 года; например, на Mac он сохраняет данные кеша в ~/Library/Application Support/JetBrains/<product><version>.

Есть ли библиотека, которая предоставит мне каноническое расположение кеша моего приложения в каждой ОС? Если нет, есть ли у кого-нибудь список, чтобы я мог вручную создавать каталоги в нужных местах?


person Stevey    schedule 07.10.2020    source источник
comment
github.com/harawata/appdirs   -  person Clashsoft    schedule 08.10.2020
comment
Windows обычно использует AppData, но это не обязательно. Нет ничего похожего на переменную среды или что-то в этом роде, это в значительной степени то, что вы решаете сами, исходя из того, как долго вы хотите хранить данные, как часто их нужно обновлять и т. д.   -  person Matthieu    schedule 08.10.2020
comment
Возможный дубликат: stackoverflow.com/questions/35388882 /   -  person VGR    schedule 08.10.2020
comment
Эй, все три этих комментария на самом деле являются правильными ответами; кто-то хочет опубликовать свой ответ, чтобы я мог отметить его принятым? (Дубликат ЯВЛЯЕТСЯ дубликатом моего вопроса, но название настолько плохое, что его невозможно обнаружить.)   -  person Stevey    schedule 10.10.2020