RandomAccesFile langsam

ottens

Aktives Mitglied
Hallo an alle,

ich habe ein TextFile, dort werden bestimmte Zeichen auftauchen, ich möchte die Stellen der Zeichen bestimmen bzw speichern damit ich ab der Stelle das File lesen kann.
Java:
RandomAccessFile raf = newn RandomAccessFile(Filepfad, LeseZugriff);

String zeile ;
long pos= 0;
while (raf.getFilePointer() < raf.length()) {
   pos = raf.getFilePointer();
   zeile = raf.readLine();
   if (zeile.equals("****")) {
      stellen[i] = pos;
      i++;
   }
}
usw

die Methode readLine() ist sehr langsam gibt es Möglichkeit, womit ich das Programm beschleunigen kann

bedanke mich im voraus

Ottens
 
S

SlaterB

Gast
RandomAccessFile scheint nicht zu cachen/ buffern, liest jedes Zeichen einzeln, das ist natürlich unmöglich langsam

der Standard unter den simplen Klassen ist
BufferedReader readLine() example

BufferedReader liest immer gleich Tausende Zeichen auf einmal
 

ottens

Aktives Mitglied
Danke für die Antwort mein Problem liegt daran, dass ich die Adresse von den Zeichen
Java:
 "***"
in Array speichern möchte für die zukunftige Lesezugriffe, BufferedReader kann leider die Adresse von den Zeichen mir nicht holen.

es gibt I/O Klassen die als Brücke dienen bin ich mir aber nicht sicher welche Kombination von Klassen passen.

Danke
 
Zuletzt bearbeitet:
S

SlaterB

Gast
wenn es eine Datei mit fester Kodierung ist, 2 Bytes für ein Zeichen oder so, dann kann man auch bei BufferedReader die Zeichen mitzählen,

oder auch: mit BufferedInputStream die bytes cachen,
darauf ein eigener Zwischenstream X, der bei jedem read() eines Bytes mitzählt,
darauf einen InputStreamReader im passenden Encoding bzw. den Default belassen

und von diesem mit read() einzeln Zeichen lesen,
dann muss man sich um Zeilenumbruch selber kümmern,
allzu viel Magie macht BufferedReader dazu aber auch nicht:

Java:
		for (i = nextChar; i < nChars; i++) {
		    c = cb[i];
		    if ((c == '\n') || (c == '\r')) {
			eol = true;
			break charLoop;
		    }
		}
RandomAccessFile ähnlich
Java:
while (!eol) {
	    switch (c = read()) {
	    case -1:
	    case '\n':
		eol = true;
		break;
	    case '\r':
		eol = true;
zwischen den Zeilen beim X nachfragen, welche Position gerade erreicht ist
 

ottens

Aktives Mitglied
also du meinest wenn man readChar() benutzt, wird 1 Byte oder 2 Byte gelesen dadurch kann man die ByteNr. von dem aktuellen Zeichen im File bestimmen ?

werde testen aber wie ist das wenn man die einzelne Zeichen nicht als TEXT bzw String bekmmt sondern als Folge von
Hexzahlen ??

Danke
 
S

SlaterB

Gast
> also du meinest wenn man readChar() benutzt, wird 1 Byte oder 2 Byte gelesen dadurch kann man die ByteNr. von dem aktuellen Zeichen im File bestimmen ?

wenn es immer dieselbe Anzahl wäre, könnte man von der relativ leicht zählbaren Zeichenanzahl (herausgeschnittene Zeilenumbrüche nicht vergessen!) auf die Byte-Postition kommen, durch RandomAccessFile testen

> werde testen aber wie ist das wenn man die einzelne Zeichen nicht als TEXT bzw String bekmmt sondern als Folge von Hexzahlen ??

das macht es schwieriger, die zweite Variante meines letzten Postings könnte weitgehend die RandomAccessFile-Möglichkeiten nachbauen,
nur ohne Herumspringen, du willst ja eh sequentiell durchlaufen, dafür mit Cache, also schneller,
 

ottens

Aktives Mitglied
vielen Dank für die Antwort und erklären wenn du noch Beispiele kennst wird mir noch mehr helfen.
habe nicht gedacht das so komplex wird, ging davon aus, dass RandomAccessFile soll die Aufgabe ganaoso wie alle I/O Klassen erledigen leider ist das nicht der Fall.

ich bedanke mich ganz herzlich.

Grüße,

Ottens
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D graphische Ausgabe zu langsam (vsync gzielt abschaltbar?)... AWT, Swing, JavaFX & SWT 13
E Java-TexturePaint sehr langsam AWT, Swing, JavaFX & SWT 9
Tommy135 JFileChooser ist sehr langsam AWT, Swing, JavaFX & SWT 13
M Swing GUI wird nach invokeLater() langsam AWT, Swing, JavaFX & SWT 19
D JavaFX GUI Komponenten werden langsam bei größerer Datenmenge AWT, Swing, JavaFX & SWT 6
J JavaFX Rendering von Canvas sehr langsam AWT, Swing, JavaFX & SWT 2
C Swing GUI extrem langsam - GUI-Code richtig ausführen AWT, Swing, JavaFX & SWT 1
L [Slick2d] Sidescroller/Hintergrundbild sehr langsam AWT, Swing, JavaFX & SWT 3
S Swing JtextPane sau langsam AWT, Swing, JavaFX & SWT 15
P JFrame langsam / seltsames Verhalten AWT, Swing, JavaFX & SWT 6
X JInternalFrame vor Java2D-Zeichnung langsam bzw. Gui friert ein AWT, Swing, JavaFX & SWT 1
H Swing JScrollPane mit "viel Inhalt" scrollt zu langsam (inkl. See-For-Yourself.jar :D) AWT, Swing, JavaFX & SWT 2
D Image soll langsam sichtbar werden AWT, Swing, JavaFX & SWT 4
M JTable mit wechselnden Spalten - sehr Langsam AWT, Swing, JavaFX & SWT 5
A HELP: JFieldText dynamisch setzen -> langsam AWT, Swing, JavaFX & SWT 19
lumo AWT Screenshots machen ist langsam? AWT, Swing, JavaFX & SWT 6
P 2D-Grafik g2.drawImage() langsam AWT, Swing, JavaFX & SWT 110
J JApplet langsam wegen vielen Tooltips? AWT, Swing, JavaFX & SWT 36
R Image laden sehr langsam AWT, Swing, JavaFX & SWT 7
F Swing JTable langsam AWT, Swing, JavaFX & SWT 13
Kr0e VolatileImage langsam AWT, Swing, JavaFX & SWT 10
A repaint() zu langsam, bitte um alternativen AWT, Swing, JavaFX & SWT 5
A Swing JTextPane sehr langsam AWT, Swing, JavaFX & SWT 6
R TableRowSorter... zu langsam AWT, Swing, JavaFX & SWT 9
Stillmatic JTextPane langsam? AWT, Swing, JavaFX & SWT 5
R JTable für sehr viele Daten sehr langsam AWT, Swing, JavaFX & SWT 20
PAX JList aktualisiert zu langsam beim Hinzufügen von Einträgen AWT, Swing, JavaFX & SWT 6
G JScrollPane scrollt zu langsam AWT, Swing, JavaFX & SWT 6
S Bilder werden sehr langsam geladen AWT, Swing, JavaFX & SWT 4
M jFileChooser extrem langsam AWT, Swing, JavaFX & SWT 15
G Swing Programmstart zu langsam AWT, Swing, JavaFX & SWT 3
J JFileChooser öffnet sich in manchen Fällen extrem langsam! AWT, Swing, JavaFX & SWT 12
D Scrollbalken zu langsam AWT, Swing, JavaFX & SWT 10
S Programm aufgrund von paint() zu langsam AWT, Swing, JavaFX & SWT 18
doctus img.getScaledInstance() sehr rechenintensiv und langsam? AWT, Swing, JavaFX & SWT 3
T Linie langsam zeichnen AWT, Swing, JavaFX & SWT 3
C JButton + JFrame Reaktion SEHR langsam. AWT, Swing, JavaFX & SWT 2
J Double-Buffering zu langsam AWT, Swing, JavaFX & SWT 4
A Warum ist jtable.addRowSelectionIntervall so langsam? AWT, Swing, JavaFX & SWT 10
T Swing bei Realtime-Aktualisierung zu langsam? AWT, Swing, JavaFX & SWT 10
C TreeModel zu langsam für EventDispatchThread AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben