PDA

View Full Version : [Java]Problema scrittura file properties


GiulioCesare
24-03-2007, 22:46
Salve ragazzi ho un problema con la scrittura su un file properties,
il problema è che eseguo il mio programma, non viene segnalato nessun
errore, ma nel file properties non viene scritto nulla. Posto qui
sotto il codice, con la speranza che qualcosa possa aiutarmi, inoltre
volevo chiedere come è possibile scrivere nel file, partendo dalla
fine dei valori scritti in precedenza nel file.


File file = new File("C:/file.properties");

Properties properties = new Properties();
properties.load(new FileInputStream(file));
properties.setProperty("CountryName", "South Africa");
properties.setProperty("CountryCode", "27");

71104
24-03-2007, 22:51
quel codice non scrive nulla: legge soltanto e poi aggiunge in memoria. per scrivere devi usare il metodo store :)

GiulioCesare
24-03-2007, 23:09
Ti ringrazio, sai inoltre per caso come è possibile scrivere nel file, partendo dalla fine dei valori scritti in precedenza nel file?

Mixmar
25-03-2007, 12:38
Penso che sia possibile semplicemente dicendo al programma di salvare i dati sul file in modalità "append":


properties.store(new FileOutputStream(file, true));


Però questo sistema ha due svantaggi: il primo è che, non rigenerando completamente il file, nessuno ti garantisce che le stesse property non siano specificate già nella parte "vecchia" del file, quella che hai letto all'inizio, e quindi potresti avere un file che specifica due volte la stessa property... credo che l'implementazione attuale legga la prima e scarti le successive, ma non ho mai provato.
Il secondo svantaggio è che ti scriverebbe l'header del file due volte in due posizioni diverse: magari è trascurabile, ma il file risulterebbe meno "leggibile" al di fuori del contesto delle classi Java... e visto che file properties servono apposta... :D

GiulioCesare
25-03-2007, 12:55
Ti ringrazio per la spiegazione molto dettagliata, tu cosa mi consigli per scrivere alla fine del file properties, senza creare i problemi che hai prima citato tu?

71104
25-03-2007, 13:01
Ti ringrazio per la spiegazione molto dettagliata, tu cosa mi consigli per scrivere alla fine del file properties, senza creare i problemi che hai prima citato tu? carica da file, aggiungi altre proprietà in memoria, ed infine risalva su file (non in append).
pseudo:

String fileName = "C:\\lol.txt";

FileInputStream fis = new FileInputStream(fileName);
Properties properties = new Properties();
properties.load(fis);
fis.close();

properties.setProperty("nuova_proprieta", "asdasdasd");
properties.setProperty("altra_proprieta", "roflmao");

FileOutputStream fos = new FileOutputStream(fileName);
properties.store(fos);
fos.close();

GiulioCesare
27-03-2007, 09:46
Ti ringrazio, però ora ho un altro problema, ho provato a ricavarmi nella classe java l'InputStrem in questa maniera
InputStream fis = this.getClass().getResourceAsStream(LS_VALUES);
però facendo così succede una cosa molto strana, siccome la classe la richiamo da una pagina jsp, quando il properties che si trova sotto tomcat viene scritto, cade la sessione, secondo voi da cosa può dipendere questo?