[Java] Nach Beenden des Programmes können seriealiserte Datein nicht gelöscht werden

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Straight-Edge, 20. Mai 2008 .

  1. 20. Mai 2008
    Nach Beenden des Programmes können seriealiserte Datein nicht gelöscht werden

    Hi

    Ich habe ein riesen großes Problem, was sich sicherlich schnell beheben lässt.

    Ich erstelle serealisierte Datein, die immer vorhanden bleiben sollen und mit denen immer gearbeitet werden soll.
    Ich beende das Programm mit Oberfläche mit einfachem "Dispose". Da ich dachte, dass der "Garbage Collector????" alle Prozesse beendet und alle Hilfsvariablen löscht, habe ich mich nicht mehr so stark auf dieses Problem beschränkt.

    Hier einmal der Aufruf, der die Datein lädt und speichert

    Code:
    public void speicherRechnung(LinkedList<Rechnung> liste)
     {
     OutputStream fos = null;
    
     try 
     {
     fos = new FileOutputStream( "rechnungsliste.ser" );
     ObjectOutputStream out = new ObjectOutputStream( fos );
     out.writeObject( liste );
     out.close();
     } 
     catch ( IOException e ) 
     { 
     System.out.println( e );
     }
     }
     
     public LinkedList<Rechnung> ladeRechnungliste()
     {
     LinkedList<Rechnung> liste = new LinkedList<Rechnung>();
     InputStream fis = null;
     try
     {
     fis = new FileInputStream( "rechnungsliste.ser" );
     ObjectInputStream in = new ObjectInputStream ( fis );
     liste = ( LinkedList<Rechnung> ) in.readObject( );
     return liste;
     }
     catch ( IOException e )
     {
     JOptionPane.showMessageDialog(new JFrame(),"Die Rechnungsliste konnte nicht geladen werden!\n Falls Sie nun Einträge erstellen, könnten die Daten gelöscht werden.","Fatal Error",JOptionPane.ERROR_MESSAGE);
     return liste;
     }
     catch ( ClassNotFoundException e )
     {
     speicherRechnung(liste);
     return liste;
     }
     }
    Ich glaube es fehlt ein Befehl wie. "datei.exit_on_close" oder so, aber ich finde nicht so einen!

    Das muss bis heute abend laufen!
     
  2. 21. Mai 2008
    AW: Nach Beenden des Programmes können seriealiserte Datein nicht gelöscht werden

    Hi,

    beim laden der Dateien wird der Stream nicht wieder geschlossen. Genau das passiert auch wenn beim speichern nen Fehler auftritt. Das schliesen eines Streams sollte man am besten in einem Finally-Block machen, da der ja bekanntlich immer ausgeführt wird. Was ich auch nicht ganz verstehe ist, warum du falls beim laden nen Fehler auftritt die Daten nochmal speicherst. Aber vielleicht hat das ja auch nen Sinn für dich Ich weiß gerade nicht genau ob das mit dem Stream Auswirkungen auf den GC hat, aber möglich ist es schon.

    Mfg
    Sinus2K
     
  3. 21. Mai 2008
    AW: Nach Beenden des Programmes können seriealiserte Datein nicht gelöscht werden

    jo das wars!

    ich speicher eine leere Liste beim laden ab, wenn die datei nicht vorhanden ist! da kann nichts falsch gemacht werden!
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.