Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Serialize Date

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    4

    Serialize Date

    Come faccio a serializzare un oggetto di tipo Date dinamicamente?
    Mi spiego meglio, ho un orologio programmato in Java ma, nel caso in cui andasse via la corrente, vorrei sapere a che ora è successo..com'è fattibile secondo voi?

  2. #2

    Moderazione

    Benvenuto sul forum! Le discussioni relative a Java non sono trattate qui, ma nell'apposita sottosezione.

    Provvedo a spostare il thread.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    L'unico modo è salvare periodicamente l'istante di tempo da qualche parte. Dove lo vuoi serializzare? Su file? Su DB? Lo vuoi serializzare in modo "leggibile" (all'occhio umano) o sfruttando la serializzazione Java?

    Ad ogni modo, la classe Date è serializzabile, quindi per l'ultima opzione, ti basta scrivere l'oggetto in un ObjectOutputStream collegato ad un FileOutputStream.

    Dacci ulteriori dettagli su cosa vuoi ottenere.


    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

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    4
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    L'unico modo è salvare periodicamente l'istante di tempo da qualche parte. Dove lo vuoi serializzare? Su file? Su DB? Lo vuoi serializzare in modo "leggibile" (all'occhio umano) o sfruttando la serializzazione Java?

    Ad ogni modo, la classe Date è serializzabile, quindi per l'ultima opzione, ti basta scrivere l'oggetto in un ObjectOutputStream collegato ad un FileOutputStream.

    Dacci ulteriori dettagli su cosa vuoi ottenere.


    Ciao.
    Vorrei fare in modo che si scriva il meno possibile su disco visto che si tratta di memoria sd, idee?

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Quote Originariamente inviata da bulosh Visualizza il messaggio
    Vorrei fare in modo che si scriva il meno possibile su disco visto che si tratta di memoria sd, idee?
    Se magari spieghi per bene cosa vuoi fare, le idee si possono trovare... al momento stiamo parlando del nulla.
    Che tipo di applicazione stai scrivendo? Dove deve girare? Che deve fare di preciso? Dove vuoi "serializzare" se non ti va bene il disco?
    Non hai dato nessuna informazione, che idee possiamo avere noi?


    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

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da bulosh Visualizza il messaggio
    nel caso in cui andasse via la corrente, vorrei sapere a che ora è successo
    Quote Originariamente inviata da bulosh Visualizza il messaggio
    Vorrei fare in modo che si scriva il meno possibile su disco visto che si tratta di memoria sd, idee?
    Con la premessa che hai fatto all'inizio, allora vorrebbe dire che ad esempio ad intervalli di 1 minuto vai a scrivere la data da qualche parte in modo permanente. Quando l'applicazione ritorna attiva, puoi appunto sapere a che data/ora si era interrotta.
    Nota: un Date contiene un long dei millisecondi. Un long è 8 byte, quindi la cosa più semplice è salvare questi 8 byte. Puoi anche decidere di salvare solo i secondi ... dividi per 1000 ma non ti cambia comunque tantissimo le cose.

    E nota che serializzare 1 Date con la "serializzazione" degli oggetti (=ObjectOutputStream) fa scrivere ben più che 8 byte.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    4
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Se magari spieghi per bene cosa vuoi fare, le idee si possono trovare... al momento stiamo parlando del nulla.
    Che tipo di applicazione stai scrivendo? Dove deve girare? Che deve fare di preciso? Dove vuoi "serializzare" se non ti va bene il disco?
    Non hai dato nessuna informazione, che idee possiamo avere noi?


    Ciao.
    Allora, sto programmando un orologio basato su un server Linux che controlla dei motorini che portano le lancette in posizione..purtroppo, non conoscendo la posizione dei motorini e delle lancette, sono costretto a salvarla nel caso andasse via la luce o altre evenienza...il programma girerebbe su scheda sd quindi non ho molte scritture/letture da fare oltre che una velocità un pò bassa ma non penso sia un problema..

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Se ho capito bene, quindi, a te serve salvare l'informazione dell'ora (ore, minuti e secondi) in modo da poterla rileggere quando l'applicazione torna a funzionare. Se è così, ti basta salvare il dato "long" dei millisecondi restituiti dal Date in un file di dati (quindi, non necessariamente un file human-readable).


    codice:
    FileOutputStream fos = null;
    DataOutputStream dos = null;
    try {
       fos = new FileOutputStream("myTimeStamp.dat");
       dos = new DataOutputStream( fos );
       dos.writeLong( new Date().getTime() );
       dos.flush();
    } catch (Exception e) {
       e.printStackTrace();
    } finally {
       if (dos != null) {
          try { dos.close(); } catch (Exception e) { }
       } else {
          if (fos != null) {
             try { fos.close(); } catch (Exception e) { }
          }
       }
    }

    Quando l'applicazione riparte, semplicemente andrai a leggere con un DataInputStream quell'unico long presente nel file e lo usi per creare l'oggetto Date corrispondente.


    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

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    4
    Provo così, risparmio qualcosina sul salvataggio dati Vi ringrazio!

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.