2009-08-21 6 views
4

J'ai une application SWT Java qui fonctionne sous Windows XP/Vista/7 et Mac OS X. Je sauve actuellement un fichier de configuration à:Le meilleur endroit pour enregistrer le fichier de configuration du programme sur Windows et OS X en utilisant Java?

System.getProperty ("user.home") + nom de fichier

Avec les changements de sécurité dans Windows Vista et Windows 7, cela ne semble pas être le meilleur endroit pour le sauvegarder.

Ce fichier enregistre des informations telles que les informations sur la clé d'enregistrement et il est gênant pour mes utilisateurs si le fichier ne peut pas être enregistré ou supprimé.

Y a-t-il un meilleur chemin que je devrais utiliser?

De même, quel est le chemin préféré pour les données d'application par utilisateur sous Mac OS X?

Répondre

2

Quels changements dans la sécurité? Je comprends qu'ils ont interdit d'écrire dans les fichiers de programme, je ne savais pas qu'ils interdisent d'écrire dans la maison de l'utilisateur.
Ce serait une rupture de compatibilité sérieuse, j'ai un certain nombre d'applications qui y écrivent, soit directement un fichier, soit dans un dossier ("caché" en mode Unix, c'est-à-dire préfixé d'un point).
Maintenant, il semble être plus "amical" d'écrire en Application Data folder comme le font un certain nombre d'autres applications (mais rarement des applications multiplateformes qui semblent utiliser la solution précédente ...) mais l'emplacement exact semble difficile à trouver dans Java, et aurait besoin d'une détection de plate-forme pour faire autre chose sur d'autres plateformes.

Une alternative semble être d'utiliser le Preferences API, c.-à-d. .

+1

+1, Préférences API est la meilleure solution –

0

Soleil lui-même, avec son panneau de commande java, a eu le même problème (bug 6487334): leur panneau de commande, en cours d'exécution à différents niveaux d'intégrité,

ne pouvait pas à la fois en lecture/écriture dans leur répertoire de déploiement Ils déménagèrent à. c:\users\<username>\appdata\local, mais devait pas compter sur System.getProperty("user.home") parce que ce jour-là, il utilise une clé de registre qui peut être réglé sur une valeur incorrecte si windows est « pincé »: bug 6519127

la question How to get local application data folder in Java?, en utilisant HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\* est le bon endroit pour commencez à chercher un accès en lecture/écriture pour vos paramètres. Par exemple, le projet SWT Win32 Extension peut être lu.

L'intérêt de garder vos données dans le homedir de l'utilisateur est qu'ils feront partie du profil de l'utilisateur qui peut être un roaming profile, enregistrée à la fermeture de session et restauré à l'ouverture de session (utilisé assez souvent sur les postes de travail de société)

1

OSX le chemin pour les données d'application à conserver est "~/Library/Application Support" selon Apple documentation