PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java: Datei einlesen



bischi
23-04-2003, 18:19
Wie lese ich in Java möglichst einfach eine Datei ein? (1. Die ganze Datei; 2. Ich mag nicht Zeile für Zeile einlesen und an einen String addieren, falls möglich; 3. Es soll eine *.txt oder *.html Datei sein)

Bin für kreative Vorschläge dankbar (hab den Überblick vor lauter Reader-Klassen verloren...)

MfG Bischi

maceop
24-04-2003, 08:52
hab leider nur ne lösung mit zeile für zeile einlesen :



StringBuffer lesepuffer = new StringBuffer();
String text;
...
try
{
FileReader freader = new FileReader("datei.txt");
BufferedReader in = new BufferedReader(freader);

while((text = in.readLine()) != null)
lesepuffer.append(text + "\n");

freader.close();
text = new String(lesepuffer);

}
catch(Exception eve)
{
}


vielleicht hilfts dir ja....

mfg
maceo

anda_skoa
24-04-2003, 10:09
Ich denke, Zeile für Zeile in einen StringBuffer zu lesen ist bereits die beste Lösung für Text.

Ciao,
_

bischi
24-04-2003, 12:14
Danke für die Tipps (auch wenn sie genau sagen, was ich schon dachte, mich aber in meinem Problem bestätigt haben).

Ich stelle weitere folgende Probleme fest:

- Ich muss schlussendlich den gesamten Text in einem String (oder auch was anderes) haben, damit ich ihn in einem Label oder was ähnlichem (das HTML-Tags unterstützt!) anzeigen kann (Mein momentaner Favorit: JLabel).
- -> gibt es Beschränkungen für die String-Länge?
- -> ist es nicht extrem langsam, wenn ich nach jeder Zeile diese wieder an den String anhänge?

MfG Bischi

peschmae
24-04-2003, 15:18
JLabel ist OK dafür

da weder unter StringBuffer noch unter String in der APIdoc was steht, ist die Grenze wohl recht gross (so im Bereich von einer Länge, die den Datentyp int in Zeichenzahl nicht übersteigt, da dieser für getLength() und so gebraucht wird). Auch ist bei StringBuffer von der neu-allokierung oder wie das auch heisst, von Buffern bei Grössenüberschreitung die Rede, was eine recht grosse Maximalgrösse erwarten lässt

In der Praxis bin ich noch nicht an einen Limit gestossen

Wenn du Strings immer mit + zusammenhängen würdest wäre das in der Tat langsam, da in maceops Beispiel aber StringBuffers verwendet werden, ist die Performance kein allzu grosses Problem (da ist dann Swing kritischer :D :D :D)

MfG Peschmä