Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Java > Allgemeine Java-Programmierung > LineNumberReader
Antwort
 
Themen-Optionen
Alt 10.03.2005, 12:23   Nach oben    #1
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 515
Standard LineNumberReader

Hi, hab ein Problem (mal wieder ). Ich habe einen BufferedReader, der Informationen aus einer Textdatei liest. Nur wird an dieser Stelle nur ein kleiner Teil ausgelesen. Also hab ich mir gedacht, dass ich einen LineNumberReader einbaue

PHP-Code:
LineNumberReader aktZeile = new LineNumberReader(buff); 
und mir dann die aktuelle Zeile in einem Integer speichere

PHP-Code:
int zeile aktZeile.getLineNumber() 
und dann später wieder die Zeile auf den im Integer gespeicherten Wert setze

PHP-Code:
aktZeile.setLineNumber(zeile); 
Die Zeile wird richtig ausgelesen nur wird sie später nicht mehr gesetzt, er fängt immer wieder von vorne an zu lesen. Warum?
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.03.2005, 12:31   Nach oben    #2
mic_checker
Gast
 
Beiträge: n/a
Standard

Kannst du mal deinen ganzen Code posten?

Wir hatten "LineNumberReader" schon mal hier im Forum , hab "damals" nen kurzen Beispiel-Code gepostet....

edit:
mein das hier:
http://www.jforum.de/showthread.php?...neNumberReader
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.03.2005, 12:37   Nach oben    #3
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 515
Standard

Auf deinen Link war ich schon, hat mir nicht wirklich was gebracht, da ich setLineNumber() brauche :rolleyes: . Hier ein bisschen mehr Code, dürfte aber nicht relevant sein ...

Code:
try {           
    BufferedReader fua = new BufferedReader(new FileReader("Z:/juhuuu/quiz.txt"));
    LineNumberReader aktZeile = new LineNumberReader(fua);
    aktZeile.setLineNumber(zeile);
    for (int i = 0; i < aktQuestion.length; i++) {
        aktQuestion[i] = aktZeile.readLine();
    }
    answerInt = Integer.parseInt(aktZeile.readLine()) - 1;
    zeile = aktZeile.getLineNumber();
}
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.03.2005, 12:41   Nach oben    #4
mic_checker
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Hobbit_im_Blutrausch
Code:
try {           
    BufferedReader fua = new BufferedReader(new FileReader("Z:/juhuuu/quiz.txt"));
    LineNumberReader aktZeile = new LineNumberReader(fua);
    aktZeile.setLineNumber(zeile);
    for (int i = 0; i < aktQuestion.length; i++) {
        aktQuestion[i] = aktZeile.readLine();
    }
    answerInt = Integer.parseInt(aktZeile.readLine()) - 1;
        zeile = aktZeile.getLineNumber();
}
Hmm....Auf was ist denn zeile gesetzt vor der for-Schleife? Lass den Wert mal ausgeben. Weil wenn du die Variable nur deklariert hast und nicht irgendwo gesetzt, dann ist ja logisch das er von anfang an liest, da zeile == 0.

Habs bei mir getestet, bei mir funzt setLineNumber...(habs mit nem festen Wert gemacht).
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.03.2005, 12:44   Nach oben    #5
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 515
Standard

Hab ich schon gemacht, "zeile" hat den Wert, den es haben soll (zuerst 0, dann 6, dann 12, dann 18, ...). Es muss irgendwie an setLineNumber liegen. Das ganze ist in einer Methode, deswegen der Umweg über den Integer, nur so als Zusatzinfo
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.03.2005, 12:46   Nach oben    #6
mic_checker
Gast
 
Beiträge: n/a
Standard

Nur rein interessehalber: Setz mal die LineNumber auf ne best. Zeile die auf jeden Fall existiert, also z.B. setLineNumber(3) und dann les , schau dann mal ob es richtig funzt (müsste ja), dann kann man immer noch weiter sehen...
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.03.2005, 12:50   Nach oben    #7
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 515
Standard

Hab ich gemacht, geht auch nicht. :mad:
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.03.2005, 12:51   Nach oben    #8
mic_checker
Gast
 
Beiträge: n/a
Standard

Hm....mir fällt gerade was auf, meine datei war unglücklich gewählt...also inhalt war nach zeile x...nochmal "gleich"

Kann es sein das setLineNumber nur "intern" sagt: das ist jetzt Zeile xy - nicht : fange an bei zeile xy zu lesen ? Weil scheinbar funzt es auch nicht richtig wenn man den Wert direkt angibt...
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.03.2005, 12:53   Nach oben    #9
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 515
Standard

Und wie sag ich dann, dass er bei dieser Zeile anfangen soll zu lesen?
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.03.2005, 12:54   Nach oben    #10
mic_checker
Gast
 
Beiträge: n/a
Standard

Scheinbar ist es so wie ich vermutet hab, man siehe nur in die Sources:

Code:
    /**
     * Set the current line number.
     *
     * @param lineNumber  an int specifying the line number.
     * @see #getLineNumber
     */
    public void setLineNumber(int lineNumber) {
	this.lineNumber = lineNumber;
    }
Später wird in den read Methoden nur lineNumber inkrementiert....
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.03.2005, 12:58   Nach oben    #11
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 515
Standard

Und wie umgehe ich das Problem?
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.03.2005, 13:02   Nach oben    #12
mic_checker
Gast
 
Beiträge: n/a
Standard

Also es wäre eine Möglichkeit, allerdings gefällt mir diese Möglichkeit überhaupt nicht:

Du führst ne Zähvariable ein, die solange inkrementiert wird bis die gewünschte Zeile erreicht ist, danach fängst du an auszugeben, wenn du fertig bist wird zeile entsprechend angepasst und die zählvariable wieder auf 0 gesetzt.

Ich frage mich allerdings ob es nicht auch möglich ist das ganze mit mark(..) und reset() aus LineNumberReader zu gestalten.

Obiger Ansatz sollte funktionieren, ist aber eine äussert "naive Lösung" und sollte nur verwendet werden wenn sonst keine Lösung auftaucht.
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.03.2005, 13:04   Nach oben    #13
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 515
Standard

Deine 1. Lösung gefällt mir auch überhautp nicht, wäre aber auf meinen Code sehr leicht anzuwenden (glaube ich ...). Hab mir mark und reset auch mal angeschaut, bin aber nicht wirklich auf eine Möglichkeit gekommen. *nochmal-API-nachschlag* ...

[edit] jetzt weiß ich auch, warum ich das nicht machen kann! Weil ich bei jedem aufruf der Methode den LineNumberReader und den BufferedReader neu generieren muss. :mad:
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.03.2005, 13:22   Nach oben    #14
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 515
Standard

Deine 1. Lösung gefällt mir auch überhautp nicht, wäre aber auf meinen Code sehr leicht anzuwenden (glaube ich ...). Hab mir mark und reset auch mal angeschaut, bin aber nicht wirklich auf eine Möglichkeit gekommen. *nochmal-API-nachschlag* ...

[edit] jetzt weiß ich auch wieder, warum ich das nicht machen kann! Weil ich bei jedem aufruf der Methode den LineNumberReader und den BufferedReader neu generieren muss. :mad:

[edit] einfach den BufferedReader als Klassenvariable erstellen und dann einmal mit nem try - catch Block den FileReader zuweisen ... Thx @ all
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:03 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44