Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe eine txt datei, die gelsen werden soll.ich arbeite mit einem bufferReader.
Kann ich dem bufferReader jetzt irgendwie sagen, das er noch mal die ganze datei lesen soll vom anfang an?
das funktioniert so einfach leider nciht, weil in meiner parse methode das ganze passieren soll.also als erstes sucht es nach bestimmten daten und beim zweiten mal durch gehen nach gnz anderen daten.
Java:
public void parse(@Nonnull BufferedReader r) throws IOException {
String line;
boolean ausgelesen = false;
BufferedReader r2 = new BufferedReader(r);
extraInfos= new ArrayList<>();
if (ausgelesen == false){
//die extraInfos müssen immer zuerst ausgelesen werden!!!!
while ((line = r.readLine()) != null) {
if (line.contains("Allgemein")){
extraInfos = new ParseBedienteilExtraInfos().parse(r);
ausgelesen =true;
//wenn wir die extraInfos ausgelesen haben, sollen alle anderen sachen ausgelesen werden
}
}
}
else
//erst wenn wir alle extraInfos ausgelesen haben
{
while ((line = r2.readLine()) != null) {
process(line, r2);
}
}
}
public void parse(@Nonnull BufferedReader r)
throws IOException
{
String line;
boolean ausgelesen = false;
BufferedReader r2 = new BufferedReader( r );
extraInfos= new ArrayList<>();
if (ausgelesen == false)
{
while ((line = r.readLine()) != null)
{
if (line.contains("Allgemein"))
{
// was ist/macht denn DIESES 'parse' ???
//--> * Analysiert den übergebenen {@link BufferedReader} und gibt eine Liste mit allen //gefundenen Objekten zurück. Diese Objekte werden benötigt, das si abhängigkeiten //enthalten.
extraInfos = new ParseBedienteilExtraInfos().parse(r);
ausgelesen = true;
}
}
}
else
{
while ((line = r2.readLine()) != null)
{
// (vermutlich) fängst Du hier wieder vorne an zu lesen!-->GENAU DAS WIL ICH
// Ggf. Folgendes ?? --> ist ja das gleiche wie das else
if( ! line.contains("Allgemein") )
{
// was macht DIESE Methode ??? --> Sucht nach weiteren Information, die gebraucht werden
process(line, r2);
}
}
}
}
Wenn ich das ganze debugge, ist bei mir bufferReader.readLine() null
aber warum?
r ist null?
aber r2 ist nciht null?;(
Was ist überhaupt dein Ziel?
Wieso willst du den BufferedReader ein zweites Mal auslesen?
Wenn du den ersten BufferedReader ausliest und auf eine Stelle triffst, wieso willst du dann einen zweiten gleichen BufferedReader auslesen?
So habe ich das verstanden!
Versuch das mal zusammen zu fassen, denn dann könnte man auch den Code einfacher machen
es gibt eine datei,darin sind mehrere unterschiedelich tabellen.
diese tabellen können in unterschiedlicher reihenfolge vorhanden sein...
ich brauche als erstes extra Infos die in einer bestimmten tabelle stehen, weil diese eine abhängikeit zu einer anderen tabelle haben.
deswegen muss ich erst die ganze datei durch suchen um erst nur die extra infos zu kriegen udn danach müsste ich die datei nochmals auslesen, um die anderen information in abhägikeit der ersten tabelle auszulesen.
nö, offengestanden NEIN !
Klingt für mich eher so, als wenn entweder Dein gesamter Aufbau ziemlicher Murks ist, oder Du da viel zu kompliziert rangehst ...
Was hat das ganz denn mit dem Auslesen zu tun?
Wenn Du gleich alles in einem Rutsch ausliest, und Dir dies dann zurückgeben läßt, kannst Du doch auf alles Mögliche reagieren!
Ich würde auf jeden Fall in "parse" nur auslesen und die entsprechende verarbeitung dann separat betrachten !!
also ich habe irgendwie bisschen falsch gedacht.anstatt die datei zwei mal aus zu lesen, lese ich sie nun ein mal aus, und speicher dieses im zwischen speicher und am ende füge ich die datein zusammen.
anstatt die datei zwei mal aus zu lesen, lese ich sie nun ein mal aus, und speicher dieses im zwischen speicher und am ende füge ich die datein zusammen.
Da ich etwas ähnliches erst vor kurzem hatte ein kleiner Hinweis: Wenn die Datei, welche geparsed werden soll, sehr groß ist kann es je nach PC zu Speicherproblemen kommen wenn du die ganze Datei in den Speicher liest und erst dann bearbeitest
Also es ist bei kleinen Dateien einfacher und performanter diese nur 1x zu lesen und da alles relevante zu parsen usw.
Bei größeren Dateien ist ein mehrmaliges lesen oder ein Cache der Parsing Results hilfreich wenn nicht sogar notwendig. (Besonders wenn man diese Arbeiten parallelisieren will )