StreamTokenizer

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,


ich hoffe, dass mir jemand von Euch helfen kann.

Ich analysiere mit dem StreamTokenizer eine Datei. Diese ist, vereinfacht dargestellt, folgendermassen aufgebaut:



43242 43P53454 63
53453 54T54354 76

Der Tokenizer erkennt 43P53454 als zwei Tokens: 43 und P53454. Das sollte aber als ein Token erkannt werden. Ich dachte, dass lediglich white spaces als default-Trennzeichen gewertet werden.

Hat jemand von Euch eine Idee?

Besten Dank und viele Gruesse,


Theo
 
poste mal ein kleines lauffähiges Testprogramm,
mit main, StreamTokenizer und Schleife welche die einzelnen Token ausgibt
< 30 Zeilen

dann werde ich gerne bei mir eine Textdatei mit den beiden Zeilen erstellen
und dich darüber informieren, dass es zumindest bei dir geht (nehme ich zumindest an 😉 )

du könntest auch mal eine neue Textdatei erstellen,
vielleicht enthält die alte irgendwelche Sonderzeichen,
diese vielleicht als byte[] einlesen und byte für byte vergleichen
 
Moin,


ich habe das Ganze weiterhin geprueft und das Problem bleibt das Gleiche: 6P214
wird als 6 (nval) und P124 (sval) erkannt. Somit werden zwei Tokens erzeugt.

Hat jemand eine Idee?



Gruss,
T
 
ich würde dir gerne helfen, kann aber dazu nicht mehr schreiben als ich schon schrieb,
denn ganz allgemein werde ich dieses unerständliche Verhalten ja nicht reproduzieren können 😉

(bin die nächsten Tage an Weihnachen evtl. aber nicht besonders oft da)
 
Die Datei ist: 6P342 6P445 6P563

Das Beispieprogramm:


Code:
public class Dateiversuch{

public static void main(String [] args) throws IOException{ 

String filename = args [0];
File xfile = new File(filename);

try{

BufferedReader br = new BufferedReader(new FileReader(xfile));
StreamTokenizer st = new StreamTokenizer(br);
int tokenType;

do{
switch(tokenType=st.nextToken()){

case StreamTokenizer.TT_NUMBER:
System.out.println(st.nval);
break;

case StreamTokenizer.TT_WORD:
System.out.println(st.sval);
break;
}
while(tokenType!=StreamTokenizer.TT_EOF);
}
catch(IOException e){
System.out.println(e);
}

}
}

Ausgabe:

6.0
P342
6.0
P445
6.0
P563



Waere genial, wenn mir jemand helfen koennte.




Gruss,

Theo


[/code]
 
nimm keinen tokenizer, lies die zeile ein mit readLine() und benutz dann split():

br.readLine().split(" ");
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben