2012-04-20 10 views
8

Dire che ho il seguenteJava Come si utilizza l'API di preferenza? Dove memorizzano queste variabili?

Preferences prefs = Preferences.userRoot().node(this.getClass().getName()); 

String ID1 = "Test1"; 

System.out.println(prefs.getBoolean(ID1, true)); 

prefs.putBoolean(ID1, false); 

//prefs.remove(ID1); 
  1. È questo persistente la prossima volta variabile eseguo il mio programma?
  2. Dove memorizzano queste variabili?
  3. Qual è il modo corretto di utilizzare questo?
  4. L'approccio è migliore rispetto all'utilizzo dei file delle proprietà?
+3

O da una versione che non era anni fa, EOLd: http://docs.oracle.com/javase/6/docs/api/java/util/prefs/Preferences.html –

risposta

12
  1. Sì, il valore è persistente ma solo per l'utente. Non sarà lì per altri utenti.
  2. Questo è specifico per il sistema operativo. Per Windows utilizza il registro, per Linux credo che usi i file nascosti nella root dell'utente, anche se non ne sono sicuro al 100%.
  3. Hai un buon esempio nella tua domanda.
  4. È diverso, non meglio. Le preferenze sono un modo per archiviare in modo trasparente le impostazioni per un'applicazione. Queste impostazioni possono essere aggiornate in fase di esecuzione da un utente (ad esempio, è possibile utilizzare prefs per memorizzare impostazioni specifiche dell'utente). Le preferenze non sono pensate per essere modificabili al di fuori dell'applicazione. I file delle proprietà tendono a memorizzare impostazioni rigide specifiche per un'applicazione. Queste impostazioni sono le stesse per ogni utente e tendono a non cambiare spesso. I file delle proprietà sono file di testo e tendono ad accompagnare un'applicazione sulla distribuzione. Puoi modificarli facilmente usando un editor di testo. È piuttosto raro che un'applicazione possa aggiornare i file delle proprietà.
+0

Nota che siamo Parlando di utenti OS qui ... quindi un'app in esecuzione su server "tomcat" utente ha la stessa preferenza "utente" per tutti gli utenti Web di quella applicazione. –

+2

Per # 1, questo valore è per l'utente a causa di '.userRoot()'. Per salvarlo per tutti gli utenti, usa '.systemRoot()' – Ron

Problemi correlati