Witam. Mój problem polega na odczytaniu pliku do którego jest coś cały czas dopisywane (zawsze na samym jego końcu). Fragment kodu:
[code]
FileInputStream br=new FileInputStream("csv");
if(cursor>0) br.skip(cursor);
int chars;
while((chars=br.read())!=-1){
cursor++;
System.out.print((char)chars);
}
br.close();
[/code]
gdzie pole (cursor) klasy jest typu long. Plik próbuję odczytać raz na sekundę i jak widać na starcie ustawiam poprzednią pozycję kursora (jeżeli coś zostało dopisane do pliku to wpada w pętle i odczytuje nowe znaki).
Rozwiązanie działa prawie idealnie. Czasami, gdy plik się zmienia wyrzucany jest błąd:
[code]
java.io.FileNotFoundException: .goutputstream-45YWPV (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:137)
at demon.Monitor.run(Monitor.java:52)
[/code]
Jeżeli raz wyrzuci błąd to ponawia go za każdym razem deklaracji FileInputStream. Poszukuję jak najbardziej wydajnego rozwiązania. Zawsze do pliku jest dopisywana pełna linijka kodu więc idealnym było by dla mnie rozwiązaniem blokady metody readLine() (czeka, nie zwaraca null) gdy w pliku przejechaliśmy wszystkie linijki i po pojawieniu się nowego wpisu readLine() zwraca nowe wartości i czeka na kolejne.