Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di gax80
    Registrato dal
    May 2006
    Messaggi
    631

    aggiungere dati ad un file già presente

    hola ragazzi, ho un problema per aggiungere dei valori in un file usando l'hashmap, ecco il mio codice:
    codice:
    File creazione = new File("conticorrenti.out");
        	 if (creazione.exists()){
        		 FileInputStream file = new FileInputStream("conticorrenti.out");
       		 ObjectInputStream in = new ObjectInputStream(file);
        		 try {
        			 Object oggetti = in.readObject();
        			HashMap HashOggetti = (HashMap) in.readObject();
    				System.out.println(" 359 lettura "+  HashOggetti.size());
    				Set<Map.Entry<Integer, ContoBancoPostaConFido>> set = HashOggetti.entrySet();
    for (Map.Entry<Integer, ContoBancoPostaConFido> me : set) {
    			      System.out.print(me.getKey() + ": ");
    			      System.out.println(me.getValue().getCorrentista());
    			      System.out.println("Numero Conto: "+me.getValue().getNumeroConto());
    			      System.out.println("Stampa Conto: "+me.getValue().stampaConto());
    			    } 
    			    
    			   
    			} catch (ClassNotFoundException e) {
    				e.printStackTrace();
    			}
        	 }
        	 else{
        	FileOutputStream file = new FileOutputStream("conticorrenti.out");	
         ObjectOutputStream out = new ObjectOutputStream(file);
        
        System.out.println("salvaconti 355 " + out.toString().toString());
        out.writeObject(nuovoConto);
        out.writeObject(dbContiCorrente);}
    }
    come vedete dal codice se il file è presente stampo i valori che ci sono dentro (vedi il codice rosso), altrimenti lo creo questo file e salvo dentro dei valori.
    La mia domanda è: come faccio ad aggungere altri valori nel file presente???
    quando il diavolo ti accarezza è perchè vuole la tua anima

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

    Re: aggiungere dati ad un file già presente

    Originariamente inviato da gax80
    La mia domanda è: come faccio ad aggungere altri valori nel file presente???
    Non puoi. Devi leggere (deserializzare) tutti gli oggetti, quindi ricreare un nuovo file e riserializzarli tutti più quelli che vuoi aggiungere.

    Nota, e voglio precisarlo bene perché è importante, non sarebbe nemmeno valido usare il costruttore di FileOutputStream che ha un parametro boolean append per indicare, se "true", di fare l'append.
    La serializzazione non funziona in "append". Quando il processo di serializzazione inizia, viene scritto sullo stream un header particolare di "marcatura" a cui seguono poi tutti gli oggetti. Se usi l'append, quell'header viene riscritto e il problema non sarebbe qui ma poi nella lettura dall'inizio. Il processo di deserializzazione si troverebbe ad un certo punto quell'header e andrebbe in palla (leggi: ti becchi un java.io.StreamCorruptedException).
    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 L'avatar di gax80
    Registrato dal
    May 2006
    Messaggi
    631
    e se usassi un file d'appoggio dove salvare i vecchi dati e quelli nuovi?
    quando il diavolo ti accarezza è perchè vuole la tua anima

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Originariamente inviato da gax80
    e se usassi un file d'appoggio dove salvare i vecchi dati e quelli nuovi?
    Non so che vantaggio ne avresti: gli oggetti li devi comunque rileggere tutti lo stesso dal file originale, per creare quello di appoggio...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.