StreamTokenizer

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
 
S

SlaterB

Gast
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
 
G

Guest

Gast
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
 
S

SlaterB

Gast
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)
 
G

Guest

Gast
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]
 
R

Roar

Gast
nimm keinen tokenizer, lies die zeile ein mit readLine() und benutz dann split():

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

Ähnliche Java Themen

Neue Themen


Oben