Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [JAVA] Errore nel file di property

    Ho un file di property nel mio programma.

    Faccio i seguenti passaggi

    Questo è il campione del file di prop:

    host =

    Una sola riga con una key vuota che voglio riempire durante l'esecuzione.


    Poi vado a riempirla così:

    props = new Properties();
    InputStream is = = new FileInputStream ("src/props/idec.prop");
    props.load(is);

    props.setProperty("host", "1");

    con questa chiamata non dovrei SCRIVERE, vicino ad host già scritto nel file, il valore 1???

    Infatti, se subito dopo chiamo una stampa col metodo

    getProperty("host");

    mi stampa 1.

    Poi però, se vado a chiudere il programma, noto con dispiacere che il file non è stato scritto.

    Io vorrei che lo fosse e che il file divenmtasse così

    host = 1

    Come posso fare?

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

    Re: [JAVA] Errore nel file di property

    Originariamente inviato da ragnonerodocet
    Poi però, se vado a chiudere il programma, noto con dispiacere che il file non è stato scritto.
    Devi scrivere tutte le proprietà con il metodo store(). Properties non lavora direttamente sul file. Istanzi un Properties, carichi da stream (opzionale), setti/leggi le proprietà, poi scrivi su stream.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Mi scuso se rispondo ancora ma è perchè non ho la possibilità di accedere adesso al mio progetto.

    Ho letto la documentazione del metodo store(OutputStream, String).

    Quindi mettiamo che abbia un file chiamato doc.prop con 2 righe del tipo

    host =
    port =

    E che quei valori devono essere uguali a 123.456.789.012 e 1000

    Allora che righe devo scrivere?

    Io farei così...

    String host_number = "123.456.789.012"


    Properties prop = new Properties ();
    FileOutputStream out = new FileOutputStream("doc.prop");
    applicationProps.store(out, host_number);
    out.close();

    Però così come faccio a comunicare che quella stringa va sulla key host o sulla key port?

    Cosa devo variare nelle mie linee di codice?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ragnonerodocet
    Però così come faccio a comunicare che quella stringa va sulla key host o sulla key port?
    Properties estende Hashtable .... tecnicamente è una mappa, nulla di più. Quindi ad 1 chiave puoi associare 1 valore.
    Puoi caricare da stream (load()), puoi settare/leggere proprietà nella mappa in memoria (setProperty()/getProperty()) e puoi scrivere su stream (store()).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Come detto vorrei scrivere nel file di properties, per la chiave host, un valore del tipo

    123.456.789.012

    Allora come devo fare, ammesso che il file si trova nella dir corrente ed è chiamato doc.prop?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ragnonerodocet
    Come detto vorrei scrivere nel file di properties, per la chiave host, un valore del tipo

    123.456.789.012

    Allora come devo fare, ammesso che il file si trova nella dir corrente ed è chiamato doc.prop?
    Scusa ma continuo a non capire il tuo dubbio ..... e non so come ripeterlo, visto che l'ho già spiegato.

    Properties è una "mappa" .... nulla di più. Ci sono 2 metodi che devi usare per leggere o settare una proprietà e sono: getProperty() e setProperty(). Ti basta vedere sulla documentazione ....

    Questi metodi non operano direttamente sul file!! Properties è una mappa in memoria. Quindi puoi leggere da stream per caricare tutto in memoria (se avevi già qualcosa su un file) quindi setti/leggi tutte le proprietà che ti pare, alla fine scrivi su stream.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Il mio dubbio è questo:

    nel file prop ho solo un campo:

    host =

    inizialmente vuoto.

    Allora scrivo:

    props = new Properties();
    OutputStream is = new FileOutputStream ("src/props/idec.prop");
    String a = "123.456.789.012";
    props.store(is, a);
    is.close();

    ma invece di scrivere

    host = 123.456.789.012

    trovo che il file è così:

    #123.456.789.012
    #Mon Jul 06 09:32:28 CEST 2009

    Perchè?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ragnonerodocet
    props = new Properties();
    OutputStream is = new FileOutputStream ("src/props/idec.prop");
    String a = "123.456.789.012";
    props.store(is, a);
    is.close();
    No no no. Ma la leggi la documentazione???? Il secondo parametro di store() è un "commento" che (se non null) viene scritto all'inizio dello stream in una riga che inizia con #. Insomma ... è un commento e basta ... non una proprietà.

    E lo ripeto per 3a o forse 4a volta: ci sono 2 metodi setProperty() e getProperty() per settare e leggere le proprietà.

    codice:
    Properties props = new Properties();
    props.setProperty("host", "blablabla");
    
    OutputStream is = new FileOutputStream("......");
    props.store(is, null);
    is.close();
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Ok, sono un cretino, nulla da fare... Non avevo assolutamente capito il funzionamento. Ora si.

    Solo una cosa mi pare strana.

    Adesso riesco a settare quelle proprietà, il programma le scrive, ma quando vado a fare il getProperty mi restituisce il vecchio valore, o null se all'avvio le Key erano vuote.

    Come se scrivesse, ma all'inizio non lo notasse.

    Forse chiudo male gli stream?

    Io ho scritto così:


    Properties prop = new Properties();

    prop.setProperty("host", ip_label.getText());

    prop.setProperty("port", porta_server_label.getText());

    prop.setProperty("user", txtUserId.getText());

    prop.setProperty("password", txtPassword.getText());

    FileOutputStream nome_file = new FileOutputStream(new File("blablabla"));

    prop.store(nome_file, "Questi sono i dati utente");

    nome_file.close();

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ragnonerodocet
    Adesso riesco a settare quelle proprietà, il programma le scrive, ma quando vado a fare il getProperty mi restituisce il vecchio valore, o null se all'avvio le Key erano vuote.
    Lo ripeto ancora una volta: Properties è una mappa. Quando istanzi Properties (new Properties()) hai una mappa "vuota", senza nulla dentro.
    Puoi settare tutte le proprietà che vuoi con setProperty() e se vuoi puoi caricare i dati da uno stream (es. file) con load().
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.