2011-11-29 223 views
5

我想让我的java桌面应用程序知道用户是否第一次在该pc上运行它。由于jar文件可能会在用户之间共享,我不想写入jar文件中的文件。 显然有很多方法可以做到这一点,但你会推荐什么? (它必须是跨平台的)。谢谢在java应用程序中检测到第一次用户

回答

4

尝试使用Preferences及其systemRoot()userRoot()方法来获取系统范围或用户特定的偏好。

+0

这似乎很整洁,但也许有点危险?系统/用户首选项可以很容易地被另一个应用程序清除或由用户手动清除,对吧? (虽然这可能很少见?) –

+0

与任何其他解决方案一样,可以由有权执行此操作的用户/应用程序更改首选项。如果您必须防止不同应用程序的首选项之间发生冲突,请考虑使用[systemNodeForPackage(Class)](http://docs.oracle.com/javase/6/docs/api/java/util/prefs/Preferences.html#systemNodeForPackage %28java.lang.Class%29)或[userNodeForPackage(Class)](http://docs.oracle.com/javase/6/docs/api/java/util/prefs/Preferences.html#userNodeForPackage%28java.lang .Class%29)方法。 – szhem

+0

[这里](http://mindprod.com/jgloss/preferences.html#LOCATION)也是关于首选项通常存储在不同系统中的一些信息。 [这里](http://java.sun.com/developer/technicalArticles/releases/preferences/)是一个相当古老但有用的关于'Preferences'的技术文章。 – szhem

7

我会建议使用用户主目录您可以在其中放置用户特定的设置文件。这将允许您检测第一次使用的用户,并记住他们可能选择的任何偏好。

System.getProperty("user.home"); // returns the home directory cross platform 
+0

这是一个非常有效的解决方案,但在这种情况下可能不是非常漂亮,因为没有用户需要的特定设置。确定应用程序可以在主目录中放置一个空文件(如果该文件存在,它不是第一次使用的用户),但用户可能会对主文件夹中的这样的文件感到恼火并将其删除。 –

0

每个OS具有在用户的数据被存储一些特定的目录(/homeC:\UsersC:\Documents and settings)。该值通常在具有“user.home”系统属性的JVM中可用。

存储一些文件来存储您的用户配置。当然,每个操作系统都有自己的方式(“应用程序数据”文件夹,名称以点开头的文件夹),您应该确保遵守它。

相关问题