首页 > 解决方案 > 我的 Java 桌面应用程序应该在哪里缓存其下载的资产?

问题描述

我有一个 Java 桌面应用程序,作为其正常操作的一部分,它会下载数十到数百 MB 的图像和音乐数据。它维护此数据的磁盘缓存。如果部分或全部缓存被删除,应用程序会注意到并重新下载丢失的数据。

这是一个有 20 年历史的应用程序,从历史上看,它已将数据放置在user.home. 我正在计划更新,我想知道是否有用于存储 Windows、MacOS 和 Linux 的应用程序缓存数据的规范位置,如果有,是否有从 Java 访问这些路径的标准方法。

我知道的唯一先例是 Gradle 和 IntelliJ,它们都是桌面 Java 应用程序。Gradle 做我的应用程序目前所做的事情;它创建一个 ~/.gradle 目录并在那里转储数据。IntelliJ 显然试图使用2020 版的更多规范路径;例如,在 Mac 上,它将缓存数据保存到~/Library/Application Support/JetBrains/<product><version>.

是否有一个库可以为我提供每个操作系统上我的应用缓存的规范位置?如果没有,是否有人在某处有一个列表,以便我可以手动在正确的位置创建目录?

标签: javadesktop-applicationdiskcache

解决方案


推荐阅读