由于我认为超出此问题范围的原因,我想移动我编写的用于Java Web Start的程序,以停止使用JWS并将其作为普通的Jar文件分发。
这个计划的主要问题是如何确定在Java中以一种不错的方式存储文件的位置,假设我将在不同的平台上运行(尽管我也依赖于JOGL,所以&#39至少在可怕的深奥平台上运行没有很大的风险。我的程序存储各种本地数据,主要用于缓存或类似缓存的#34;目的 - 能够保留它非常好,但如果数据丢失则不是完全灾难。
我目前使用JNLP PersistenceService
来实现这个目的,因此离开JWS我需要找出一些存储文件的目录。考虑一下:
File datadir = new File(System.getProperty("user.home"), ".myprogram");
我认为这在Unix和类Unix平台上运行良好,但它至少在Windows等某些平台上显然是 ugly ,我想我应该使用{{1目录或其他任何内容。
我目前的想法是使用此AppData
作为默认的回落,除了在已知的平台上我用更好的东西替换它,比如Windows。我对此的问题是:
datadir
相匹配,我猜 应该工作得很好,但有更好的方法吗?我不会用反思进行本质上的测试,看看是否存在一些可以提供帮助的os.name
包或某些东西(有回落到默认值的风险),如果这是好的话。 (问题一般适用于所有平台;是否有任何一些有用的习惯用法来解决这个问题?)sun.*
应该在OSX上正常工作,对吗?答案 0 :(得分:1)
如果它只是可替换的缓存数据,我建议使用临时目录。
请参阅:
new File(File.createTempFile().getParent(), 'my-file-name');
您可以将其设置为在应用关闭时销毁,或者将其保留在那里。
如果你想要更多的半永久存储但不需要存储,你可能需要关心你所使用的操作系统,并采取相应的措施,如t his question的答案
答案 1 :(得分:1)
考虑使用java.util.prefs.Preferences API来实现此目的。