2011-11-29 22 views
5

Quiero que mi aplicación de escritorio java sepa si el usuario la está ejecutando por primera vez en esa PC. Como el archivo jar puede compartirse entre usuarios, no quiero escribir en un archivo dentro del archivo jar. Obviamente hay muchas formas de hacerlo, pero ¿qué recomendarías? (Tiene que ser multiplataforma). graciasDetectar usuario por primera vez en la aplicación Java

Respuesta

4

Intente utilizar Preferences y sus métodos systemRoot() o userRoot() para obtener preferencias de todo el sistema o específicas del usuario.

+0

Esto parece realmente limpio, ¿pero quizás un poco peligroso? las preferencias del sistema/usuario pueden ser fácilmente borradas por otra aplicación o manualmente por el usuario, ¿verdad? (tal vez eso es muy poco común ...?) –

+0

Como con cualquier otra solución, las preferencias pueden ser cambiadas por el usuario/aplicación que tiene permisos para hacerlo. Si tiene que evitar conflictos entre las preferencias de diferentes aplicaciones, considere usar [systemNodeForPackage (Class)] (http://docs.oracle.com/javase/6/docs/api/java/util/prefs/Preferences.html#systemNodeForPackage % 28java.lang.Class% 29) o [userNodeForPackage (Class)] (http://docs.oracle.com/javase/6/docs/api/java/util/prefs/Preferences.html#userNodeForPackage%28java.lang .Class% 29) métodos. – szhem

+0

[Aquí] (http://mindprod.com/jgloss/preferences.html#LOCATION) también se proporciona información sobre dónde se almacenan las preferencias en diferentes sistemas. Y [aquí] (http://java.sun.com/developer/technicalArticles/releases/preferences/) es un artículo técnico bastante viejo pero útil sobre 'Preferences'. – szhem

7

Recomendaría utilizar el directorio de inicio de los usuarios donde puede colocar un archivo de configuración específico del usuario. Esto le permitirá detectar usuarios nuevos y recordar las preferencias que puedan elegir.

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

Esta es una solución efectiva, por supuesto, aunque no muy bonita en este caso, ya que no se necesitan configuraciones específicas del usuario. Seguro que la aplicación podría colocar un archivo vacío en el directorio de inicio (si el archivo existe, no es un usuario nuevo), pero el usuario podría molestarse con ese archivo en la carpeta de inicio y eliminarlo. –

0

Cada sistema operativo tiene algunos directorios específicos en los que se almacenan los datos de usuario (/home, C:\Users, C:\Documents and settings). Este valor generalmente está disponible en la JVM con la propiedad del sistema "user.home".

Almacene allí algún archivo para almacenar su configuración de usuario. Por supuesto, cada sistema operativo tiene su forma de hacerlo (carpeta "Datos de la aplicación", carpeta con un nombre que comienza con un punto), debe asegurarse de cumplirla.

Cuestiones relacionadas