在各种平台上创build文件的通用位置(非用户特定的)

我写跨平台的Java应用程序,我需要一些地方,我可以存储一些文件。 这些文件将被另一个可能在另一个用户下运行的Java应用程序使用。 这意味着我不能使用:

System.getProperty("user.home"); 

因为我可能没有读/写这些文件的权限。 我需要的是某种方式来获得非用户特定的文件夹,每个应用程序可以创build/读取/删除文件(类似于Windows的“C:\ ProgramData”)。 是否有一个跨平台的方式来获得这样的文件夹(至less对于Windows和Linux),或者如果没有任何 – 获取Windows的这种文件夹(应该在XP-7上工作),Linux和Android的最佳方式是什么。 任何拼图块欢迎。

我不知道这样一个跨平台的文件夹,所有用户都可以读取。 但是你可以:

  • 为每个操作系统定义一个特定的文件夹, commons-lang可以帮助你确定平台(参见SystemUtils )
  • 在应用程序启动过程中检查当前用户是否可以读/写文件夹。

使用中央配置(为此安装定义数据交换文件夹)也可能是一个选项,但这取决于项目的打包。