在java应用程序中检测到第一次用户
问题描述:
我想让我的java桌面应用程序知道用户是否第一次在该pc上运行它。由于jar文件可能会在用户之间共享,我不想写入jar文件中的文件。 显然有很多方法可以做到这一点,但你会推荐什么? (它必须是跨平台的)。谢谢在java应用程序中检测到第一次用户
答
我会建议使用用户主目录您可以在其中放置用户特定的设置文件。这将允许您检测第一次使用的用户,并记住他们可能选择的任何偏好。
System.getProperty("user.home"); // returns the home directory cross platform
+0
这是一个非常有效的解决方案,但在这种情况下可能不是非常漂亮,因为没有用户需要的特定设置。确定应用程序可以在主目录中放置一个空文件(如果该文件存在,它不是第一次使用的用户),但用户可能会对主文件夹中的这样的文件感到恼火并将其删除。 –
答
每个OS具有在用户的数据被存储一些特定的目录(/home
,C:\Users
,C:\Documents and settings
)。该值通常在具有“user.home”系统属性的JVM中可用。
存储一些文件来存储您的用户配置。当然,每个操作系统都有自己的方式(“应用程序数据”文件夹,名称以点开头的文件夹),您应该确保遵守它。
这似乎很整洁,但也许有点危险?系统/用户首选项可以很容易地被另一个应用程序清除或由用户手动清除,对吧? (虽然这可能很少见?) –
与任何其他解决方案一样,可以由有权执行此操作的用户/应用程序更改首选项。如果您必须防止不同应用程序的首选项之间发生冲突,请考虑使用[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
[这里](http://mindprod.com/jgloss/preferences.html#LOCATION)也是关于首选项通常存储在不同系统中的一些信息。 [这里](http://java.sun.com/developer/technicalArticles/releases/preferences/)是一个相当古老但有用的关于'Preferences'的技术文章。 – szhem