Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356

    Uso di Preferences.userRoot() e Preferences.systemRoot()

    Cercando qua e là sul web ho trovato che facendo così:

    codice:
    public class TestSysTray {
    
        
      public static final String REALKEY = "com.java2s.gui";
      public static void main(String[] args) {
        Preferences p = Preferences.userRoot();
        
        p.put(REALKEY, "nicola");
    
        System.out.println(p);
        
        System.out.println(p.get(REALKEY, "key"));
    
        p = Preferences.systemRoot();
        p.put(REALKEY, "key 2");
    
        System.out.println(p);
        System.out.println(p.get(REALKEY, "default"));
      }
        
    }
    è possibile usare i registri per salvare alcune informazioni.
    Però mi sono chiesto alcune cose alle quali non sono riuscito a darmi una risposta, ovvero:

    1) che differenza c'è tra Preferences.userRoot() e Preferences.systemRoot()?
    2) questa soluzione funziona a prescindere dal sistema operativo in uso?
    3) è dannoso?
    4) una volta che non si utilizza più l'appliacazione, i registri rimangono settati giusto? come si possono pulire?
    5) che ne pensate di questo modo?
    Jekkil

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Uso di Preferences.userRoot() e Preferences.systemRoot()

    Originariamente inviato da Jekkil
    1) che differenza c'è tra Preferences.userRoot() e Preferences.systemRoot()?
    Non si intuisce??? Per l'utente corrente .... o per il sistema ("globale").

    Originariamente inviato da Jekkil
    2) questa soluzione funziona a prescindere dal sistema operativo in uso?
    Sì, nel senso dell'uso di Preferences che ovviamente è disponibile indipendentemente dal S.O. purché si abbia almeno un Java 1.4. Ma il sistema di "backing store" cambia da un S.O. all'altro. Su Windows lo store è fatto nel registry (in locazioni ben precise/fisse ... non è un modo per accedere arbitrariamente al registry!!) mentre sui sistemi Linux (e simili) lo store è fatto su file di configurazione di "testo" (con un formato che se ben ricordo è un semplice nome=valore), per l'utente sono localizzati sotto (da qualche parte) la "home" dell'utente.
    Ma non ho modo di provare/ricordare bene ora.

    Originariamente inviato da Jekkil
    3) è dannoso?
    In che senso??
    No ... sono solo "dati". E oltretutto la API di Preferences "nasconde" all'utilizzatore la reale locazione "fisica" dei dati .... quindi non si può "danneggiare" null'altro di particolare volutamente o non volutamente.

    Originariamente inviato da Jekkil
    4) una volta che non si utilizza più l'appliacazione, i registri rimangono settati giusto?
    Sì.

    Originariamente inviato da Jekkil
    come si possono pulire?
    Meglio tramite ancora Preferences. Altrimenti diventa tutto "system-dependent" e bisogna "sapere" bene dove/come sono messe le cose.

    Originariamente inviato da Jekkil
    5) che ne pensate di questo modo?
    Di gestire dei dati di "configurazione"?? Beh ... la API in java.util.prefs è stata fatta appositamente .... anche se sono pochi che forse la conoscono e la usano!
    Nulla vieta di gestire dei dati di configurazione in qualunque altro modo, anche solo ad esempio tramite file di "properties" (che esistono da sempre... java.util.Properties) o altro con XML o roba più sofisticata (es. piccoli db "embedded").
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Oltre a quello che ha detto andbin, ti dico che io nel mio piccolissimo uso la classe Preferences. Ci salvo la dimensione e posizione del JFrame, le impostazioni di colore, di carattere, di tutto quello voglio resti alla chiusura dell'applicazione. Forse non è il metodo migliore, ma il fatto che se non trova il nome della preference puoi impostarne una di default, facilita molto.
    al volante son nervoso

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    Innanzi tutto grazie mille per l'esauriente risposta!

    Sì, nel senso dell'uso di Preferences che ovviamente è disponibile indipendentemente dal S.O. purché si abbia almeno un Java 1.4. Ma il sistema di "backing store" cambia da un S.O. all'altro. Su Windows lo store è fatto nel registry (in locazioni ben precise/fisse ... non è un modo per accedere arbitrariamente al registry!!) mentre sui sistemi Linux (e simili) lo store è fatto su file di configurazione di "testo" (con un formato che se ben ricordo è un semplice nome=valore), per l'utente sono localizzati sotto (da qualche parte) la "home" dell'utente. Ma non ho modo di provare/ricordare bene ora.
    vabbè ma a me non interessa come il sistema lo gestisce giusto?
    Basta che mi memorizza le informazioni che mi servono no?


    Meglio tramite ancora Preferences. Altrimenti diventa tutto "system-dependent" e bisogna "sapere" bene dove/come sono messe le cose.
    Però se io elimino l'applicazione non so più come fare no?
    A meno che non creo un file per la disintallazione giusto?

    Nulla vieta di gestire dei dati di configurazione in qualunque altro modo, anche solo ad esempio tramite file di "properties" (che esistono da sempre... java.util.Properties) o altro con XML o roba più sofisticata (es. piccoli db "embedded").
    Certo, però in questo caso dovrei andare a leggere un file esterno al jar. Quindi dovendone conoscere il percorso, e dovendo specificare un percorso diverso per sistemi operativi diversi. Mentre in questo modo rimando al SO la memorizzazione delle info.
    A meno che non salvo il file properties nel Jar stesso e allora lo carico a runtime ma in quel caso non posso poi salvare le impostazioni diverse...

    E' giusto quello che dico?
    Jekkil

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.