Textfile auslesen und durchsuchen

F

Frido

Gast
Hallo zusammen,

ich möchte gerne ein Textfile zeilenweise auslesen und je nach Textteil eine Variable befüllen. Zur besseren Erklärung ein Beispiel:

Textdatei:
Code:
:10A:15,5
:999C:HALLO
...

Nun lese ich die erste Zeile aus und suche nach meinen Identifiern ":10A:", ":999C:" usw. Wenn der Identifier in der entsprechenden Zeile gefunden wurde, soll der nachfolgende Text in einer Variable gespeichert werden. Die Frage ist nur wie gehe ich da am besten ran?

Das zeilenweise Einlesen der Textdatei habe ich mit einem BufferedRead realisiert. Mit einer While-Schleife gehe ich dann die Zeilen durch. Soweit, so gut.

Nur wie durchsuche ich den String am sinnvollsten nach dem Identifier (von denen gibt es natürlich mehr als die beiden im Beispiel?). Prüfe ich alle möglichen Identifier mit einer If-Abfrage durch, oder gibt es da intelligentere Ansätze?

Viele Grüße

Markus
 

VfL_Freak

Top Contributor
Moin,

Du könntest die einzelnen Zeilen einfach nach ':' splitten und dann im Ergebnis per 'equals' vergleichen !

Gruß
Klaus
 
F

Frido

Gast
Das Problem ist nur, es gibt auch teilweise noch andere Trenner als den ":" z.B. "/" oder "//"... Da hilft mir Split nicht wirklich weiter.
 

Michael...

Top Contributor
Prüfe ich alle möglichen Identifier mit einer If-Abfrage durch, oder gibt es da intelligentere Ansätze?
Da es sich hier ja um verschieden Strings als Identifier handelt bleibt Dir nicht viel anderes übrig als diese in einer Liste zu halten und diese gegen die Zeile zu prüfen. String bietet da mehr Methode als split, z.B. contains, indexOf...
Kann man die Identifier, denn irgendwie abstrahieren?
 
S

Spacerat

Gast
Was wäre denn das für ein äh... Datenformat? Ein eigenes? Dann dahingehend ändern, dass es nur ein Trennzeichen gibt (oder gleich Properies verwenden). Ein fremdes? Dann verwerfen und eigenes benutzen.
 
F

Frido

Gast
Hi Michael,

danke für den Ansatz! Die contains und indexOf Methoden sind auf jeden Fall hilfreich. Abstrahieren kann ich die Identifier leider nicht, die sind für das Beispiel schon stark vereinfacht (In der Praxis soll eine SWIFT Datei verarbeitet werden...).

Im Moment bleibt mir dann wohl wirklich nichts anderes als die Textdatei zeilenweise auszulesen und dann mit allen möglichen Identifiern abzugleichen, oder hat hier noch jemand eine Idee? Ich würde dies dann mit unzähligen If-Abfragen (eine je identifier) bewerkstelligen.
 
F

Frido

Gast
Was wäre denn das für ein äh... Datenformat? Ein eigenes? Dann dahingehend ändern, dass es nur ein Trennzeichen gibt (oder gleich Properies verwenden). Ein fremdes? Dann verwerfen und eigenes benutzen.

Nein, das sollte ein sehr stark vereinfachtes Beispiel für das SWIFT Format sein ;)
Verwerfen geht da leider nicht :)
 

Michael...

Top Contributor
In dem Fall reicht es dann vermutlich eh nicht aus "Identifier" zu erkennen. Du musst Sie dann vermutlich auch noch interpretieren. Also musst Du die Datei doch parsen - wenn's dafür keinen fertigen, freien Parser gibt eben selbst einen schreiben.
 
F

Frido

Gast
@Spacerat: Das meinte ich SWIFT

@Michael: Die Überlegung war, dass ich an Hand des Identifiers zunächst den Datensatz (Zeile) identifiziere und danach abhängig vom Ergebnis die entsprechenden Daten aus der Zeile extrahiere (interpretiere?) und weiter verarbeite.
 

Michael...

Top Contributor
Wenn der Aufbau einer Datei immer gleich/ähnlich aufgebaut ist könnte man evtl. (in einen String einlesen und) mit RegEx Pattern und Matchern die gewünschten Inhalte rauslösen.
 
S

Spacerat

Gast
Ist doch das "gleiche". Hier mal einige Parser für Java. AnaSys scheint für dich interessant zu sein, zumindest unterstützt es den MT515 Typ. An einen eigenen Parser würde ich mich da gar nicht wagen (ist schlicht zu Umfangreich), wenn's andere Möglichkeiten gibt.
 
Zuletzt bearbeitet von einem Moderator:

Mujahiddin

Top Contributor
Also so wie ich das verstanden habe, suchst du nach umgekehrten StringTemplates... Dazu brauchst du weder einen Parse noch eine Library. Ich habe sowas ähnliches geschrieben... Da hast du z.B. solche Texte:
Code:
"Ihr momentaner Punktestand beträgt <points> Punkte."
"Sie befinden sich gerade in der <floor>. Etage!"
"Der Name <name> ist bereits vergeben. Bitte wählen sie einen anderen!"
Man kann nun diese einlesen und mit einer Klasse
Code:
StringTemplate
kann man die "Variablen", die in < und > stehen, setzen.

Wenn ich das richtig verstanden habe, brauchst du das gleiche, nur umgekehrt:
Code:
"Setze Variable "name" auf "Peter"! :name:Peter
(der erste Teil wird ja anscheinend ignoriert, weil dein Programm nur auf ":xyz:" hört.

Die Frage ist, in welchen Bereichen deines Programms du diese Sachen brauchst. Am einfachsten wäre, wenn du eine
Code:
Map<String/*identifier*/, Object/*variable*/>
hättest, dann hättest du es sehr einfach. Wenn das in einer Klasse ist, dann könntest du den Prozess in eine Methode umwandeln, die etwa
Code:
private void setField(String identifier, Object value)
und per
Code:
switch
alle "Möglichkeiten" durchgehen und den Object dem Feld zuweisen.

Die letzte Variante wäre Reflection. Davon würde ich aber abraten, das bringt nur Schwierigkeiten und ist der Killer aller Obfuscators!

Ich hoffe, ich konnte helfen. Übrigens würde ich, wenn du alle Zeilen einlesen willst, die Methode
Code:
Files.readAllLines(Path, Charset)
empfehlen. Diese gibt eine
Code:
List<String>
zurück. Außerdem ist dadurch, dass du Charset angibst, sichergestellt, dass es mit Umlauten etc. keine Probleme auf anderen Betriebssystemen gibt.
Ansonsten
Code:
Files.readAllBytes(Path, Charset)
und mittels
Code:
new String(byte[])
den String erzeugen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M textfile mit java auslesen Java Basics - Anfänger-Themen 4
L Textfile mit StringTokenizer einlesen und sortiert ausgeben Java Basics - Anfänger-Themen 8
N User Eingabe mit Zeile aus TextFile vergleichen Java Basics - Anfänger-Themen 13
D Textfile lesen/schreiben abhängig vom inhalt Java Basics - Anfänger-Themen 6
A Textfile wird nur unvollständig eingelesen Java Basics - Anfänger-Themen 4
M Import Unicode Textfile Java Basics - Anfänger-Themen 10
L Textfile mit BufferReader einlesen Java Basics - Anfänger-Themen 4
A Textfile verarbeiten. Java Basics - Anfänger-Themen 15
mwildam Textfile lesen und schreiben - so viele Möglichkeiten Java Basics - Anfänger-Themen 5
M if-else-endif in Textfile erkenne Java Basics - Anfänger-Themen 8
M in Textfile Strukturen erkennen Java Basics - Anfänger-Themen 5
M Textfile durchlaufen und ersetzen Java Basics - Anfänger-Themen 2
M in Textfile Textphrase ersetzen Java Basics - Anfänger-Themen 13
P Textfile einlesen Java Basics - Anfänger-Themen 8
S Ringbuffer-Speicher mit einem Textfile Java Basics - Anfänger-Themen 2
H Mit JSP in ein Textfile schreiben Java Basics - Anfänger-Themen 2
H Header von Textfile bearbeiten Java Basics - Anfänger-Themen 14
G Stringmaipulation, Textfile einelsen und Suchen und Ersetzen Java Basics - Anfänger-Themen 12
M Textfile in einer JTextArea anzeigen Java Basics - Anfänger-Themen 3
R Textfile vs Serialized Objects Java Basics - Anfänger-Themen 4
A Abspeichern von werten in einer textfile. Java Basics - Anfänger-Themen 2
G wie 'tabs' und 'zeilenumbruch' in textfile einbauen? Java Basics - Anfänger-Themen 5
G Textfile bearbeiten und speichern Java Basics - Anfänger-Themen 3
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
T array auslesen Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
D Eclipse will nicht auslesen Java Basics - Anfänger-Themen 6
E TIF Datei auslesen Java Basics - Anfänger-Themen 2
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
sserio TXT-Datei Auslesen und den Wert jedes Namen ausrechnen etc. Java Basics - Anfänger-Themen 37
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
U Sekunden von LocalTime auslesen, wie möglich? Java Basics - Anfänger-Themen 1
E Outlook ordner auslesen Java Basics - Anfänger-Themen 4
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
J Datei aus Netzwerk auslesen Java Basics - Anfänger-Themen 9
J Jsonfile auslesen Java Basics - Anfänger-Themen 8
A Eine Textdatei auslesen Java Basics - Anfänger-Themen 16
N Aus einem String die Anzahl der Vokale auslesen Java Basics - Anfänger-Themen 40
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
J Bestimmte parameter aus Jsonfile auslesen Java Basics - Anfänger-Themen 15
AleXusher Mehrdimensionales Array aus txt.file auslesen Java Basics - Anfänger-Themen 4
L Zeichen an bestimmter Stelle auslesen Java Basics - Anfänger-Themen 4
3 Textdatei Zeilenweise auslesen Java Basics - Anfänger-Themen 3
J Json Datei auslesen Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
S Tastatureingabe auslesen und in Konsole ausgeben Java Basics - Anfänger-Themen 6
S CSV Datei auslesen und anders darstellen Java Basics - Anfänger-Themen 2
G Scanner nutzen und Index auslesen Java Basics - Anfänger-Themen 8
N JTable auslesen Java Basics - Anfänger-Themen 6
N Java CSV Datei auslesen Java Basics - Anfänger-Themen 6
F Webseiten Quelltext auslesen Java Basics - Anfänger-Themen 5
J Datei auslesen (nur bestimmte Stellen) Java Basics - Anfänger-Themen 2
I csv auslesen, mittels List Java Basics - Anfänger-Themen 18
S Letzte Zahl eines Integer auslesen? Java Basics - Anfänger-Themen 3
G If / While Programm (Datei auslesen) Java Basics - Anfänger-Themen 6
S Aus einer .bz2 Datei auslesen Java Basics - Anfänger-Themen 2
K Textdatei auslesen und über Mqtt schicken Java Basics - Anfänger-Themen 4
B Name von Verzeichnis bekommen - Files von einem Ordner auslesen Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
D XML von Seite auslesen Jsoup Java Basics - Anfänger-Themen 2
I Druckerauflösung auslesen - mittlerweile möglich? Java Basics - Anfänger-Themen 4
B WSDL auslesen? Java Basics - Anfänger-Themen 8
D Methoden Textdokument erstellen und auslesen. Java Basics - Anfänger-Themen 46
B HTML Code / Seite auslesen und JAVA Objekte erstellen Java Basics - Anfänger-Themen 12
S Datein auslesen und verarbeiten Java Basics - Anfänger-Themen 1
J Geld speichern und wieder auslesen Java Basics - Anfänger-Themen 10
S CSV auslesen UTF-8 Problem Java Basics - Anfänger-Themen 7
D Datei auslesen & Werte in Variable speichern Java Basics - Anfänger-Themen 12
K String buchstaben auslesen Java Basics - Anfänger-Themen 9
S Amazon Produktbeschreibung auslesen und nach Keywords suchen Java Basics - Anfänger-Themen 2
x-tshainge Interface Wie kann ich aus Textfeldern auslesen Java Basics - Anfänger-Themen 6
Z Ersten Buchstaben eines Elements eines String-Arrays auslesen Java Basics - Anfänger-Themen 5
B .txt. Datei auslesen und bestimmten Wert wiedergeben Java Basics - Anfänger-Themen 5
CptK x wert eines Bildes auslesen Java Basics - Anfänger-Themen 1
T Website auslesen Java Basics - Anfänger-Themen 2
T String auslesen bzw. überprüfen Java Basics - Anfänger-Themen 1
L CSV Auslesen Java Basics - Anfänger-Themen 5
B Auslesen von PDF / Bilder Java Basics - Anfänger-Themen 5
das_leon Alle Zeilen einer CSV-Datei auslesen Java Basics - Anfänger-Themen 1
D Mit Java HTML bzw Javascript auslesen Java Basics - Anfänger-Themen 1
F Arrays Sätze speichern und einzelne Worte mit Index Angabe auslesen Java Basics - Anfänger-Themen 4
F Zwischenwerte aus Browser auslesen Java Basics - Anfänger-Themen 19
S Jede Ziffer einer Zahl auslesen, damit rechnen und beim Ergebnis wiederholen ? Java Basics - Anfänger-Themen 20
G Servlet - externe HTML (URL) auslesen Java Basics - Anfänger-Themen 1
T class Datei auslesen Java Java Basics - Anfänger-Themen 5
P Liste auslesen und in Variablen speichern Java Basics - Anfänger-Themen 7
D String erste Zahl mit LKZ auslesen lassen Java Basics - Anfänger-Themen 36
J Hashmap auslesen Java Basics - Anfänger-Themen 7
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
D String untereinander auslesen lassen Java Basics - Anfänger-Themen 2
M Aus Datei auslesen und untersuchen ob diese Zeile schon vorhanden ist Java Basics - Anfänger-Themen 3
DaCrazyJavaExpert Variablen Zahlen aus Strings auslesen Java Basics - Anfänger-Themen 4
J Informationen aus Webseiten auslesen Java Basics - Anfänger-Themen 1
S Text aus einer HTML Datei auslesen Java Basics - Anfänger-Themen 1
M Einzelne Pixel in einem Bild auslesen und bearbeiten Java Basics - Anfänger-Themen 1
dragonfight86 Erste Schritte OpenDocument auslesen Java Basics - Anfänger-Themen 13
I Texte mit Absätzen in Dateien speichern und auslesen Java Basics - Anfänger-Themen 1
W DNS Name auslesen + weitere Anfängerfrage Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben