Library für Textdateien Schema


#1

Sonnige Grüße,
suche eine Library, mit der man für Textdateien Schema angeben kann. Dann bin ich hier gelandet: http://introcs.cs.princeton.edu/java/stdlib/In.java.html , speziell bei: {@code new In(filename)}.{@link #readAllInts()} , also #readAllInts(). Ist es richtig, dass pro Zeile nur ein int stehen darf?

Ich möchte gerne, dass in einer Zeile jeweils 3 ints oder doubles stehen dürfen, validieren und einlesen. Ist das mit einer Lib. möglich?

Alles bitte einfach, drei Methoden: Filename, Schema setzen, einlesen…
Bis dann


#2

Also das Einzige, was ich mir vorstellen könnte, wäre ein modifizierter StremTokenizer, bei dem man die ganzen Setup-Methoden per Schema-Klasse aufruft.

[code]import java.io.Reader;
import java.io.StreamTokenizer;

public class ExtendedStreamTokenizer extends StreamTokenizer {
public ExtendedStreamTokenizer(Reader r) {
super®;
}

public void setScheme(TokenizerSheme s) {
	s.setup(this);
}

}[/code]
Wie man den Reader bekommt, weißt du sicher.
Das Interface

[code]import java.io.StreamTokenizer;

public interface TokenizerSheme {
void setup(StreamTokenizer st);
}[/code]
Muss dann nur noch entsprechend implementiert werden. Dazu müsstest du dich mit dem StreamTokenizer aber auseinandersetzen, damit du erfährst, wie man was damit erreicht.
So mit drei Methoden ists also nicht getan.


#3

Sehr gut, also StreamTokenizer bringt eine erweiternde Funktionalität TokenizerSheme mit. :slight_smile:

Warum wusste ich das nicht. :cry:


#4

Weil dies auf meinem Mist gewachsen ist, deswegen heisst die Klasse ja auch ExtendedStreamTokenizer. In der Setup-Methode von TokenizerSheme, kannst du mit allen Set-Methoden, die der Tokenizer bietet, diesen konfigurieren und diese Konfigurationen auf die Art in Shemes zwecks Mehrfachverwendung zusammenfassen.
So verwende ich den Tokenizer öfters für meine DT_Lib, allerdings benötige ich dazu auch noch den zweiten Konstruktor für die InputStreams, welchen ich hier weggelassen habe, weil er normalerweise deprecated ist.