[JAVA] Methode readLine() von BufferedReader überschreiben

  • Themenstarter Themenstarter Shlyakh
  • Beginndatum Beginndatum
S

Shlyakh

Guest
Ich habe zwei Klassen, die eine heißt Test1, in welcher ich eine Klasse Reader instantiiere.


Die Klasse Reader erbt von java.io.BufferedReader (siehe Code). Ich will nun die Methode readLine() , die ich ja von BufferedReader erbe, überschreiben.

Ich meine, dass es so irgendwie falsch ist, denn mein Korpus, den ich ja einlesen will, wird falsch eingelesen - es fehlt dort so etwa jede zweite Zeile.

Weiß jemand, wie man readLine() anders überschreiben könnte? Ich habe zudem im Netz keine gescheite Doku zur readLine-Klasse gefunden.

Code:
import java.io.*;

class Test1{

public static void main(String[] argv){


BufferedReader sbr = null;
String readertype="korpusformat";


try{

if(readertype.equals("korpusformat")){


  sbr = new Reader(new FileReader("meinKorpusDatei")); }

  for(String line = sbr.readLine();sbr != null;line=sbr.readLine()){

System.out.println(line);


} sbr.close();

}catch(IOException e){}

   }
}
import java.io.*;
import java.util.regex.*;


Code:
class Reader extends BufferedReader
{

public Reader(FileReader fr){

super (fr);

}


public String readLine() throws IOException{


String s1=null;

//Hier wil ich dann einen String s1 erzeugen, indem ich mit super die readlineMethode aufrufe, und dann aber einige Änderungen durchführe.
try{
s1=super.readLine().replaceAll("\\s+", " ").replaceAll("[0-9]+_[0-9]+", "").replaceAll("_", "").trim().split("\\s+")[0];
}catch(Exception e){}


return s1;

     }


}
 
1. In folgendem Teil:
Code:
for(String line = sbr.readLine();sbr != null;line=sbr.readLine()){
Nehme ich an willst du wissen ob das Ergebniss null ist und nicht dein Reader ?.
(line != null anstatt sbr != null)

2. Solltest du in deinem Reader die Fehler abfangen. Was passiert denn momentan wenn die readLine Methode des BufferedReaders dir null zurück gibt ?
Du rufts funktionen auf null auf. ;)
 
O nein, wie konnte ich nur so auf dem Schlauch stehen. Jetzt geht es.

Vielen Dank für die Antwort!
 
Zurück
Oben