Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Scrivere su file

  1. #1

    Scrivere su file

    Ciao a tutti
    volevo chiedere un consiglio su come salvare su file :P . Mi spiego, per un esame ho fatto un miniprogramma dove si ipotizza di dover gestire un magazzino di vestiti e mettere a disposizione intefaccie per aggiungere,modificare,visualizzare i prodotti. All'avvio la lista dei prodotti si carica da file, e se si fanno delle modifiche queste vanno salvate almeno quando si chiude il programma. Il professore però vorrebbe che aggiorniamo il file nn solo alla fine,ma ogni volta che modifichiamo uno dei campi di un prodotto della lista ( un arraylist, per come l'ho fatto io) e quindi ho messo che ogni volta che si chiama il metodo modifica si chiama anche un altro metodo, ovvero scrivisufile che però riscrive ogni volta tutta la lista di prodotti. C'è un modo per aggiornare il file solo sui campi che ho modificato? Per scrivere ho messo la classe prodotto come serializable( e quindi il file che uso è binario) però nn salvo il singolo prodotto ma tutta la lista.
    Spero di nn averla fatta troppo contorta :P
    Grazie

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

    Re: Scrivere su file

    Originariamente inviato da lally_fragola
    C'è un modo per aggiornare il file solo sui campi che ho modificato?
    Dipende dal formato/struttura del file e comunque gli "stream" non sarebbero più usabili.

    Originariamente inviato da lally_fragola
    Per scrivere ho messo la classe prodotto come serializable( e quindi il file che uso è binario) però nn salvo il singolo prodotto ma tutta la lista.
    Se hai serializzato direttamente una lista che contiene oggetti, chiaramente "serializzabili", allora non puoi fare nulla. Il file è sì "binario" ma il formato è quello del "protocollo" della serializzazione. E non puoi certamente leggere/scrivere oggetti con accesso "casuale". Anche ipotizzando teoricamente che fosse possibile resterebbe comunque un problema concettuale di fondo: potresti volere aggiungere o togliere informazioni (es. un campo stringa più lungo o più corto) ma tutti i byte dopo quel punto non li puoi banalmente "shiftare" in avanti o indietro!!

    Soluzioni:

    a) Usi un database, se non vuoi/puoi usarne uno di quelli "client-server" ci sono quelli "embedded" in puro Java (es. Derby o HSQLDB).

    b) Inventi un "tuo" formato binario che stabilisce dei record di lunghezza fissa e ben precisa di tot bytes. Chiaramente dovrai usare RandomAccessFile e tutta la logica dell'accesso "casuale" al record X e la codifica di dati (sopratutto stringhe) è tutta a tuo carico.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    ok,allora penso che lascerò le cose così :P più che altro l'esame è fra tipo due giorni e non saprei come realizzare in tempo breve i suggerimenti, magari ci riprovo a esame passato(almeno spero ) Grazie

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 © 2026 vBulletin Solutions, Inc. All rights reserved.