Javowy tail -f

0

Witam,
Postanowilem sobie zrobic program, ktorego bardzo mi brakuje na windzie, a ze akurat bawie sie w javie, to wiadomo w czym chcialem go napisac ;).
Chodzi o tytulowy tail. Polega on na wyswietleniu ostatnich linijek pliku textowego (mi chodzi dokladnie o ostatnia), natomiast parametr -f oznacza ciagle sprawdzanie czy nastapila jakas zmiana w pliku.
Program powstal:

public class Main {

    public Main() {
    }

    public static void main(String[] args) {

        String linia = "";
        String text = "";
        String sciezka = "C:\\Documents and Settings\\Koru\\Pulpit\\1.txt";
        int before = 0;
        int after = 0;

        while (true) {
            try {
                FileReader fr = new FileReader(sciezka);
                BufferedReader bfr = new BufferedReader(fr);
                    while ((linia = bfr.readLine()) != null) {
                        text = linia;
                        after++;
                    }
                if (after != before) {
                    System.out.println(text);
                    before = after;
                    }
                after = 0;
                bfr.close();
            } catch (IOException ex) {
                System.out.println("Błąd przy operacji na pliku: " + ex);
            }
        }
}
}

Wszystko dziala, ale badzmy szczerzy - dziala strasznie zamulajaco. Wiem, ze petla while i ciagle otwierania i zamykanie pliku zabija ten program, ale na nic lepszego nie wpadlem. Prosilbym bardziej o sugestie niz o gotowe rozwiazania, w koncu chce sie nauczyc javy, a nie kopiowac i wklejac gotowe zrodla :P.
Z gory dziekuje za pomoc

0
  1. http://sourceforge.net/project/showfiles.php?group_id=51715

  2. Pomiędzy sprawdzeniami rób przerwy, śpij 1 sekundę.

  3. Sprawdzaj czas modyfikacji pliku(lastModified() z klasy File
    http://java.sun.com/javase/6/docs/api/java/io/File.html#lastModified() )

0

Dzieki za zainteresowanie tematem, choc przyznam, ze tylko trzeci punkt mnie satysfakcjonuje ;).
Wiem, ze istnieja odpowiedniki bashowych komend na windowsa, mozna nawet pobrac samego basha, ale zaznaczylem, ze chce sie podjac zadania w javie.
Tak samo opoznienie jest dla mnie nie do przyjecia. Parametr -f charakteryzuje sie tym, ze wypluwa wynik prawie natychmiastowo, w zaleznosci od wielkosci przeszukiwanego pliku. Moj program ma problemy nawet z niewielkimi plikami i podaje wynik czasami z wiekszym opoznieniem niz 1s.
Za to ostatni punkt wydaje mi sie dosc interesujacy, sprawdze jak zachowa sie program po pewnych modyfikacjach ;).

1 użytkowników online, w tym zalogowanych: 0, gości: 1