BufferedReader von ganz unten anfangen zu lesen

ottens

Aktives Mitglied
hallo,

ich habe hier eine Frage und möchte euch um Hilfe bitten.

1- ich habe eine TextDatei, die aus bis zu 500,000 Blöcke besteht, pro Block gibt es zig lesbare
Zeilen mit klick auf JButton wird ein Block gelesen der User kann abwärts und rückwärts die Blöcke
lesen jetzt wenn der User Block bzw Blöcke lesen möchte, die ganz am Ende des BufferedReaders
liegen d.h ich möchte vom Ende des BufferedReaders das Block holen bzw lesen und nicht von oben
bis unten.
gibt es Möglichkeit, womit man das BufferedReader von unten liest und nicht wie üblich von oben?


Grüße,

Ottens
 
Zuletzt bearbeitet:
RandomAccessFile gibt es dafür, alles Stream-basierte, auch BufferedReader, fällt dann aber weitgehend aus,
Zeilenumbrüche und einfach alles musst du dir selber raussuchen

aufwendig wäre, die ganze Datei in Zeilen einzulesen und im Arbeitsspeicher neu zu strukturieren,
auch das ist aber nichts für Standardklassen
 
danke für die Antwort aber dadurch möchte ich Zeit sparen, d.h wenn der User ein Block wählt
ganz unten im BufferedReader liegt, soll ganz nah wo das gewählte Block liegt gesucht werden.

grüße,

Ottens
 
auf Wünsche a la 'x soll Block y von selbst finden' reagieren Computer normalerweise ziemlich gelassen bis gar nicht

Programme ergeben sich aus den bekannten Befehlen und vorhandenen höheren Methoden,
natürlich kannst du noch auf bisher unbekannte fertige passend zu deinen Zielen hoffen, ich kann leider keine nennen
 
kenne die Randbedingungen nicht, aber eine Lösung wäre es
alles in eine DB einlesen (ev. Embedded) mit Block-Id's ,oder wie auch immer,
versehen.
 
ich möchte das BufferedReader in die DB importieren aber vor dem Import möchte
die Blöcke erst sehen zum prüfen (also der User) daher .

also der user kann die Blöcke mit Klicken auf JButton die Blöcke
auf JFrame bzw JPanel betrachten aber wenn er beim letzten Block
und will vor letztem Block sehen dann sucht das programm das ganze
BufferedReader von oben erst und das dauert echt lange .

Grüße,

Ottens
 
eine Datei ist nunmal ein Berg von Bytes auf der Festplatte, egal wer und wann da was macht,
a) es muss entweder von vorne an gehen mit entsprechender Arbeit, die auf direktem Wege nicht wirklich zu verkürzen ist

b) man fängt mit RandomAccessFile an einer zufälligen Stelle x an, etwa 100.000 Zeichen vor dem Ende,
die 100.000 kann man als String einlesen, dann vielleicht auch in einen BufferedReader schieben falls vorteilhaft usw.,
aber es kann nicht sicher sein, wo man genau landet, wenn nicht die Information irgendwo vorhanden ist,

oder c) es gibt tatsächlich gewisse Meta-Information, z.B. eine zweite Datei mit Inhaltsverzeichnis und Positionen, oder eben all das was eine DB anstellt

d)
direkt rückwärts ein Zeichen nach dem anderen zu lesen wird glaube ich von der Hardware nicht so gut unterstüzt,
während etwa im Arbeitsspeicher mit Iteratonen auf Listen beliebig ist, genauso für DB,
das müsste man mit hier dem RandomAccessFile machen, erst die letzten 1000, dann die 1000 davor, usw.,
und richtig umsortieren,
alles Spezialfälle für die es direkt für File nichts fertiges gibt, was dann auch evtl. nicht genau passen würde
 
Zuletzt bearbeitet von einem Moderator:

Zurück
Oben