RandomAcessFile getFilePointer in normalen FileReader

Laren

Bekanntes Mitglied
Hi,

Ich habe ein Programm geschrieben, bei dem ich RandomAcessFile benutze. Bei dem Programm muss ich wissen, wie weit er mit dem Schreiben ist und habe einfach "Datei.getFilepointer / Datei.length * 100" geschrieben, das mir diesen Prozentwert zurückgibt.

Jetzt ist es aber so, dass RandomAcessFile extrem langsam ist. Gibt es eine Möglichkeit dies zu buffern oder gibt es eine Möglichkeit über den normalen FileReader den Filepointer herauszubekommen?

Grüße
 

chalkbag

Bekanntes Mitglied
Wenn ich dich richtig verstehe, möchtest du eine Statusanzeige für den Write_Prozess?

Ich würde das nicht über die aktuelle Dateigröße machen, dass würde zu einem einen weitern Dateizugriff (File io) bedeuten, und dank (Windows) CacheManager wäre das sowieso eine recht ungenau Geschichte und würd somit den Aufwand nicht rechtfertigen.

Gegevorschlag,

wenn du in eine Datei schreiben willst, weißt du ja wieviel du schreiben willst. Teil den riesen Block doch in kleine Häppchen und nach jeden Häppchen aktualisiert du die Statusanzeige.
 

Laren

Bekanntes Mitglied
Wie schreibst Du denn die Daten raus?

Ich verstehe deine Frage jetzt nicht so ganz???:L

wenn du in eine Datei schreiben willst, weißt du ja wieviel du schreiben willst. Teil den riesen Block doch in kleine Häppchen und nach jeden Häppchen aktualisiert du die Statusanzeige.


Es ist so, dass ich z.b. eine Textdatei hab, die hat 100 mal den Buchstaben a und ich will diese Datei komplett mit dem Buchstaben b überschrieben.
dann sieht mein Code so aus:
Java:
  schreiben = new RandomAccessFile(dateipruefung, "rw");

            

            
            while(stop==false)
        
            {
                
          
             Status sta = new Status(schreiben.length(),schreiben.getFilePointer());  //dies ist ein Thread, der den aktuelle Fortschritt berechnet und an eine Statusbar weitergibt
             sta.start();
             sta.stop();
                
             schreiben.writeBytes("d");

            }

Dies ist aber sehr langsam, wie bekomme ich diesen schneller?
 

Michael...

Top Contributor
Das Konstrukt schaut irgendwie merkwürdig aus. Was das
Code:
sta.start(); sta.stop();
auch noch unmittelbar hintereinander.
Ich denke der Wurm steckt hier ganz wo anders, als beim RandomAccesFile
100 Buchstaben lesen und 100 andere Buchstaben rauszuschreiben sollte allzu lange dauern.
Selbst bei mehreren 1000 Zeichnen würde das reine Lesen und Schreiben so schnell gehen, dass der Anwender kaum etwas davon mitbekommt.

Muss dann jeder Buchstabe einzeln rausgeschrieben werden?
Kannst Du hier eventuell ein kompilierbares Bsp posten?
 

Ähnliche Java Themen

Neue Themen


Oben