Datein von der Festplatte lesen

Xym

Erfahrenes Mitglied
Hi Leute!

Mein Problem ist, dass ich erfolgreich einen Text Speichern kann.
Code:
Action saveAction = new AbstractAction("Speichern")
     {
       public void actionPerformed(ActionEvent ev)
       {
        Writer fw = null;

        try
        {
         fw = new FileWriter( "fileWriter.txt" );
         for(i=0;i<anzahl;i++)
         {
          fw.write( Sname[i] );
          fw.write( Sstrasse[i] );
          fw.write( Swohnort[i] );
          fw.write( SPLZ[i] );
          fw.write( Salter[i] );
         }

        }
        catch ( IOException e ) {
         System.err.println( "Konnte Datei nicht erstellen" );
        }
        finally  {
         if ( fw != null )
         try { fw.close(); } catch ( IOException e ) { e.printStackTrace(); }
        }

       }
     };

Und so habe ich versucht sie zu lesen.
Code:
Action openAction = new AbstractAction("Öffnen")
     {
       public void actionPerformed(ActionEvent ea)
       {
         Reader fr = null;
         try
         {
           fr = new FileReader("fileWriter.txt");
           String s=fr.read();
           System.out.println(s);
         }
         catch(IOException e)
         {
           System.out.println(e);
         }

       }
     };
Doch hier kommt der Fehler das er nur in den String lesen kann sondern nur Zahlen also int.

Kann mir wer bitte sagen wie ich das schaffe ? :D
 
Hallo,

nur mal so als Tipp:
Langlaufende Operationen wie komplexe Berechnungen, File / Network IO oder Datenbank abfragen nie direkt im EDT (Event Dispatch Thread / UI-Thread) durchführen. Sonst wird das Event-Handling oder das Neuzeichnen der Oberfläche blockiert.

Führe die Berechnungen besser in einem anderen Thread aus (Beispielsweise über ExecturService , new Thread, oder SwingWorker.doInBackground(){...}) und aktualisiere die Oberfläche nach (oder auch an geeigneten Punkten während) der Brechnung via EventQueue.invokeLater(...) bzw. SwingWorker.publish(...)/done(){...}


Gruß Tom
 
Ich würde sogar noch weiter gehen und sagen File/Network I/O nie im EDT ausführen. Das ist zwar minimal aufwändiger, aber es vermeidet auf lange Sicht einige Probleme. Und das Programm funktioniert auch für langsamere PCs (bzw. wenn du es z.B. von einem USB-Stick startest) oder wenn jemand eine deutlich langsamere Internetverbindung hat (z.B. Modem statt DSL 6000).
 
Zurück