TXT File einlesen unterschiedliche Zeilenlänge

Anubis273

Mitglied
Moin Zusammen,

ich hänge gerade an folgendem Problem fest:

Ich lasse mir ein TXT File einlesen und speichere mir die eingelesenen Werte in einem String Array.
Eine Zeile in dem TXT File besteht in der Regel also zu 98 % aus 6 Blöcken welche ich jeweils mit einem Split separiere. Das Textfile und Array sieht dann so aus:

aaa bbb ccc ddd eee fff

[0] [1] [2] [3] [4] [5]

Funktioniert soweit auch prima ! ABER: Wenn das Textfile nur die Länge:

aaa bbb ccc hat, läuft meine Methode in eine Exception. Jetzt habe ich natürlich schon anhand if Abfragen oder eine Prüfung auf "null" versucht das Problem zu umgehen, bislang leider ohne Erfolg.

Gibt es da eine elegante Lösung für dieses Problem ?

Schonmal vielen Dank im Voraus

Anubis273
 
G

Gast2

Gast
Lies die Datei Zeilenweise ein (BufferedReader#readLine), und splitte jede Zeile dann beim Leerzeichen (deineZeile.split(" ")).
Dann ist es egal wieviele Blöcke in jeder Zeile vorkommen.
 
P

pappawinni

Gast
Bh.. ist natürlich schwer zu sagen, was du da falsch machst, so ganz ohne Code und Fehlermeldung.
Ich mutmaße einmal, dass du auf Array-Elemente zugreifen willst, die nicht existieren.
Du machst also vermutlich sowas
Code:
String splitarray[] = strRead.split(" ");
Dann willst du wahrscheinlich auf Array-Elemente zugreifen und bekommst dann, wenn dein Array kürzer ist, als du dachtest, eine Exception.

Bevor du auf Arrayelemente zugreifst müsstest du in diesem Fall also prüfen, wieviele Elemente dein Array hat.

Java:
if (splitarray.length >= index+1)
{
  // Zugriff mit diesem index möglich
}
else
{
  // Bei dem index ist nichts worauf du zugreifen könntest
}
 
Zuletzt bearbeitet von einem Moderator:

Anubis273

Mitglied
Sehr richtig, ich speichere in mein input Array und greife auf die Stelle in diesem Array zu.
Wenn aber nun beim einlesen das TXT File weniger als 6 Blöcke hat und ich separierer ja mit split(" ")
dann gibts eine Out Of Bounds Exception

Hier mal mein Code dazu:

Java:
kernel = new String[zeilenZaehler];
			BufferedReader br1 = new BufferedReader( new FileReader("C:/READSLD/kernel.TXT")); 
			for (int i=0; i<1; i++) {			// Diese For Schleife sorgt dafür, dass im TXT File erst ab Zeile 2 gelesen wird !
			     br1.readLine();
			 } 
			while((zeile = br1.readLine()) != null) {  
				 input = zeile.split(" ");
	
				if ( input.length <= 2) {
					break;         // Funktioniert ! Ich möchte aber hiernach weiter einlesen !!! 
				}
								
				 kernel[zeilenNummer] = input[0] +"_" + input[1]+ "_" +input[4]+ "_"+ input[2]+ "_"+ input[3] + "_" +input[5];
				 System.out.println(kernel[zeilenNummer]);  // Gibt alle Kernel`s aus die in kernel.txt stehen !
				 zeilenNummer++;
					
			} 
				System.out.println("###################################################");
				System.out.println("Kernel´s erfolgreich ausgelesen !");
				System.out.println("###################################################");
				
		} catch (FileNotFoundException e) {           
				e.printStackTrace();  
				}
			catch (IOException e) {           
				e.printStackTrace();    
			}
			catch (ArrayIndexOutOfBoundsException e) {
				System.out.println("OUT OF BOUNDS in 'leseHost' Methode !"); 
			}
		}
	// ============================ Ende der einlese Methode ==============================================================================
	
	
}

Also bis zu meinem break; funktioniert alles natürlich ohne Exception, aber wie bringe ich die Methode dazu anstelle des break in der nächsten Zeile weiter zu lesen ?
Bin echt ratlos ???:L
 

Michael...

Top Contributor
Sehr richtig, ich speichere in mein input Array und greife auf die Stelle in diesem Array zu.
Wenn aber nun beim einlesen das TXT File weniger als 6 Blöcke hat und ich separierer ja mit split(" ")
dann gibts eine Out Of Bounds Exception
...
Also bis zu meinem break; funktioniert alles natürlich ohne Exception, aber wie bringe ich die Methode dazu anstelle des break in der nächsten Zeile weiter zu lesen ?

Wenn nur die Zeilen mit sechs Blöcken relevant sind, dann pack einrach nur diese in Dein "Sammel" Array - dazu gibt es die Möglichkeit Abfragen zu programmieren
Java:
if (input.length == 6) {
    kernel...

Um die erste Zeile eines Textfiles zu "überspringen" braucht man keine Schleife hier reicht einfach der einmalige Aufruf von readLine()
 
P

pappawinni

Gast
Oh, Mann, das
Java:
                 kernel[zeilenNummer] = input[0] +"_" + input[1]+ "_" +input[4]+ "_"+ input[2]+ "_"+ input[3] + "_" +input[5];
muss doch schon in die Hose gehen, wenn die Länge < 6 ist.

und da verstehe ich schon zweimal nicht, warum du überhaupt splittest, wenn du den Käse nachher wieder zusammensetzt.
Da könnte man ja auch gleich nur die " " durch "_" ersetzen, oder?

Java:
if (input.length == 6) { 
  kernel[zeilenNummer] = zeile.replaceAll(" ","_");
}

Ok, ich muss ja auch nicht alles verstehen.

[EDIT]
Sorry, hab übersehen, dass du die Reihenfolge änderst.
Also von mir aus, splite, packe aber deine Montage dorthin, wo auch sichergestellt ist,
dass dein Array 6 Elemente hat.
[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:

Anubis273

Mitglied
Danke Michael,

hab eine if Abfrage wie du es mir vorgeschlagen hattest drumherum programmiert und auf feste Länge geprüft, nun funktioniert es !

@papawinni: Is doch kein Ding ! Mit dem replace wäre super praktisch, jedoch baue ich wie du vollkommen richtig erkannt hast, alles wieder in einer anderen Reihenfolge zusammen :)

Vielen Dank nochmal an alle !
 
P

pappawinni

Gast
Also lieber Anubis,
die If-Abfrage stand bereits in meinem ersten Posting. Du hast das evtl. nur nicht verstanden.
Insgesamt wird klar, dass du dich auf Anfänger-Niveau bewegst und insoweit hätte dein Beitrag wohl auch besser ins Anfänger-Forum gepasst.
Im Übrigen muss ich wohl demnächst den "Vielen Dank"-Button beantragen. Den haben scheinbar schon viele vergeblich gesucht. :lol:
 

Anubis273

Mitglied
Hey pappawinni,

ja jetzt im Nachhinein hab ich verstanden was du mir mit deinem ersten Post sagen wolltest ! Das hatte ich auf Anhieb nicht ganz nachvollziehen können, Sorry. Das nächste " Dankeschön " gehört hoffentlich dir :)

Danke nochmal :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Datei in File-Objekt mit UTF-8 einlesen Allgemeine Java-Themen 2
M File einlesen während es beschrieben wird.. Allgemeine Java-Themen 6
B StringBuilder von File einlesen Allgemeine Java-Themen 8
E HTML File mit Umlaute einlesen Allgemeine Java-Themen 8
W xml File einlesen und in eine andere xml File einfügen.. Allgemeine Java-Themen 2
B Recordbasiertes File mit javacc einlesen Allgemeine Java-Themen 2
K File(s) Einlesen Allgemeine Java-Themen 4
E Binary file einlesen Allgemeine Java-Themen 1
W Jar-File Start nur über Terminal Allgemeine Java-Themen 13
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
D Read JSON File Problem Allgemeine Java-Themen 9
S Umstellung von File auf Path - Probleme mit Stream Allgemeine Java-Themen 5
C jar File mehrfach aufrufen (als Windows Dienst) Allgemeine Java-Themen 5
N File Path mit Variablen angeben Allgemeine Java-Themen 1
izoards Zugriff auf gemeinsame Ressource (CSV-File) Allgemeine Java-Themen 3
S Class File Editor -> Source not found Allgemeine Java-Themen 4
F jar File ausführen Allgemeine Java-Themen 14
M File Binary Representation Allgemeine Java-Themen 1
N jar File auf Mac mit Doppelklick starten Allgemeine Java-Themen 5
O Input/Output java.io.File beenden Allgemeine Java-Themen 5
G File not found - nach dem Kompilieren Allgemeine Java-Themen 6
T Jar File zu exe... Allgemeine Java-Themen 3
M Foreign Memory API / Memory-Mapped File Allgemeine Java-Themen 0
R Delete files before creating new from temp using Java file method Allgemeine Java-Themen 1
S File lesen und schreiben Java 6 Allgemeine Java-Themen 2
T String-Manipulation beim Ablauf in Eclipse und als JAR-File Allgemeine Java-Themen 8
F Input/Output FileNotFoundException, obwohl File existiert Allgemeine Java-Themen 5
G Excel File öffnen, in Zelle schreiben, abspeichern Allgemeine Java-Themen 6
L JAR-File auf Ilias (LMS) laufen lassen Allgemeine Java-Themen 0
ralfb1105 Classpath Directory fuer Properties File Allgemeine Java-Themen 2
L File beim Kopieren in einen anderen Ordner umbenennen Allgemeine Java-Themen 6
J File in Package erstellen & lesen mit Programmstart in externe Projekt Allgemeine Java-Themen 3
I File ausführen und mein Programm bearbeiten lassen Allgemeine Java-Themen 11
A File lesen Codierung Charset Allgemeine Java-Themen 5
J .java-Dateitext Compile zur Laufzeit ohne File Allgemeine Java-Themen 15
M Key-File im selben Ordner speichern? Allgemeine Java-Themen 18
I TrueZip add file to archive Allgemeine Java-Themen 10
T Probleme mit dem Pfad zum Propertie file Allgemeine Java-Themen 7
J ftp - delete file ohne appache Allgemeine Java-Themen 8
X Klassen File-Klasse wird als Directory markiert Allgemeine Java-Themen 8
T ImageIO.read -> Can`t read input file Allgemeine Java-Themen 11
L Applet Problem "security: Trusted libraries list file not found" ? Allgemeine Java-Themen 7
C Swing File[] als klickbare links in irgendeinem Swing Element Allgemeine Java-Themen 3
H Kennt sich jemand mit Eclipse und dem Thema Jar-File aus ? Allgemeine Java-Themen 6
H Laden einer (Resourcendatei) aus einem Jar-File Allgemeine Java-Themen 17
C Authentifizierung mit java.nio.file? Allgemeine Java-Themen 5
L CSV File lesen, in ArrayList speichern und ausgeben Allgemeine Java-Themen 3
M xlsx File auslesen Exception occured Allgemeine Java-Themen 13
offi Drag and Drop mehrerer File aus Explorer in JTable Allgemeine Java-Themen 1
G Java/LibGDX File Loading Exception Allgemeine Java-Themen 2
Cromewell JavaFX FXML-File lädt unter Ubuntu nicht Allgemeine Java-Themen 7
D Java Anwendung mit dll File Allgemeine Java-Themen 5
AssELAss Log4j Logging Ausgabe für jede Klasse in seperates File Allgemeine Java-Themen 2
thet1983 Input/Output read properties file from classpath Allgemeine Java-Themen 3
J Umwandeln von URL zu File und danach kopieren geht nicht Allgemeine Java-Themen 1
J Properties file ändern Allgemeine Java-Themen 12
S Executable Jar File startet nicht unter Windows 10 Allgemeine Java-Themen 3
B Objekte anhand von Properties file Allgemeine Java-Themen 41
Dechasa Input/Output Write into File Allgemeine Java-Themen 2
N Maven ObjectMapper Error wenn das File gespeichert wird Allgemeine Java-Themen 0
H Security Manager (IIOException: Can't read input file!) Allgemeine Java-Themen 2
H File.listFiles() funktioniert nicht... Allgemeine Java-Themen 10
C Input/Output Problem bei Datei verschiebung mit File.move und Paths.get() Allgemeine Java-Themen 26
X Zeile unter einer bestimmen Zeile hinzufügen(File) Allgemeine Java-Themen 1
F Open source file übersetzen Phython -> Java Allgemeine Java-Themen 4
C file.delete() funktioniert bei zweiten aufruf nicht mehr Allgemeine Java-Themen 3
M Desktop jar File icon Ändern? Allgemeine Java-Themen 14
O Sax-Parser ließt XML-File doppelt Allgemeine Java-Themen 1
J Java Software Compare Files und Neue File erstellen Allgemeine Java-Themen 0
Thallius Custom File Chooser Allgemeine Java-Themen 1
C .jar File lässt sich nur über Konsole öffnen Allgemeine Java-Themen 1
J Java Download Filedownload File.getFileName Allgemeine Java-Themen 3
R Java .class-File-Konstrunkt mit Programm visualisieren Allgemeine Java-Themen 18
G SecurityManager/Policy-File/Reflection Allgemeine Java-Themen 0
M pdf File bzw. ausgefüllte pdf Formulare drucken Allgemeine Java-Themen 2
S Input/Output File Not Found FileReader Allgemeine Java-Themen 6
Thallius Serialisiertes File kann auf anderem Rechner nicht geladen werden Allgemeine Java-Themen 12
P Java Dynamic Web Project -> config File Allgemeine Java-Themen 1
S runnable jar file in Verbindung mit itext Allgemeine Java-Themen 3
D Variablen java.io.File zum vergleichen abspeichern Allgemeine Java-Themen 1
M File IO Klasse ... wie einbinden Allgemeine Java-Themen 6
O Freies Tool zum Jar-File obfuscaten gesucht! Allgemeine Java-Themen 5
F File.listFiles ohne .sort Allgemeine Java-Themen 6
B XML File JAXB Allgemeine Java-Themen 0
S Platzverbrauch, File oder String Allgemeine Java-Themen 14
J Runnable jar-File: Fehlermeldung Allgemeine Java-Themen 2
P Kurze Frage: aus einer File die Zeilenanzahl auslesen Allgemeine Java-Themen 9
K Gepacktes Jar-File gibt beim Doppelklick eine Exception aus Allgemeine Java-Themen 4
P java.nio.file unter Java 6 verwenden Allgemeine Java-Themen 4
B Finde letztes veränderte File Allgemeine Java-Themen 4
E Zip-File entpacken: unterschiedlicher Zeitaufwand bei unterschiedlicher Puffergröße Allgemeine Java-Themen 2
Guybrush Threepwood File.canWrite() und UAC Allgemeine Java-Themen 7
N Input/Output Mit Windows 7 erzeugtes zip-File in Java 7 öffnen Allgemeine Java-Themen 5
B Garbage Collection Logfile: Binary File Allgemeine Java-Themen 2
H XML-File mit Java erzeugt Frage Allgemeine Java-Themen 10
V C-Header Datei aus .java File herstellen Allgemeine Java-Themen 10
D File mit Inhalt kopieren und dieses File dann neu erstellen ? Allgemeine Java-Themen 4
T @NotBlank verwendet nicht message aus .property-File Allgemeine Java-Themen 4
G Jar-File soll eignen *.jar Namen ausgeben Allgemeine Java-Themen 10
S Jar-File startet nicht über doppelklick Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben