# Hilfe... Zeitschleife?



## Larsemann (5. Apr 2004)

Hi,
bin absoluter Dummy und will eigentlich nur ein kleines java-Programm schreiben, welches mir ständig den aktuellen Inhalt einer Datei (ganz einfache int-Zahlen) einliest (oder in bestimmten Zeitintervallen abfragt) und in einen Bereich eines bestehenden GUIs schreibt. Wie kann man das realisieren? Ein einfaches Beispiel für eine solche Abfrage wäre super !

Danke
Larsemann


----------



## Beni (5. Apr 2004)

Na dann, hier ein kleines Beispiel:

```
import java.io.*;
import javax.swing.*;

public class Main {
    public static void main(String[] args) {
        // Ein Frame und ein Label um das alles anzuzeigen
        JFrame frame = new JFrame();
        JLabel label = new JLabel( "Zahl" );
        Reader reader = new Reader( label, new File( "demo.txt" ) );
        
        frame.getContentPane().add( label );
        frame.setBounds( 20, 20, 100, 90 );
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        frame.setVisible( true );
        reader.start();
    }
}
```


```
import java.io.*;

// Der Thread, der die Datei auslesen soll
public class Reader extends Thread{
    private JLabel label;
    private File file;
    
    public Reader( JLabel label, File file ){
        this.label = label;
        this.file = file;
    }
    
    public void run(){
        // Eine Endlosschleife, die einmal pro Sekunde die Datei öffnet, und ausliest
        while( true ){
            read();
            try {
                Thread.sleep( 1000 );
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    
    private void read(){
        try{
            // Dieser Teil liest eine Datei aus. Der gesammte Inhalt
            // wird als 1 String verstanden. Der String kann dann in einen
            // Integer umgewandelt werden
            
            // Der InputStream, der das File liest
            FileInputStream in = new FileInputStream( file );
            
            // In diesem Buffer werden die gelesenen Zeichen gespeichert
            StringBuffer chars = new StringBuffer();
            
            // auslesen
            int read = in.read();
            while( read != -1 ){
                chars.append( (char)read );
                read = in.read();
            }
            
            in.close();
            
            label.setText( chars.toString() );
            // Wenn der Inhalt in einen Integer verwandelt werden soll
            //int value = Integer.parseInt( chars.toString() );
        }
        catch( IOException ex ){
            label.setText( ex.getMessage() );
        }
        catch( NumberFormatException ex ){
            label.setText( ex.getMessage() );
        }
    }
}
```


----------



## Larsemann (6. Apr 2004)

Danke schön, wird sofort ausprobiert!

Larsemann


----------

