Datei auslesen - wo ist mein Fehler?

Status
Nicht offen für weitere Antworten.

Fry

Aktives Mitglied
Hallo zusammen,

ich habe eine kleine Methode die mir die Werte einer tabstopgetrennten Datei auslesen soll. Mein Problem ist jetzt das st.nextToken() mir immer in den Wald läuft, der überspringt immer förmlich Werte und steigt dann auch mit einer nosuchelementexception aus.
Weiß einer worans liegt?

Code:
BufferedReader reader = new BufferedReader(new FileReader(pfad));
			
			String line = reader.readLine();
			
			int anzahlReihen = 0;
			
			while(line != null)
			{
				
				StringTokenizer st = new StringTokenizer(line);
				
				for(int i=0; i < fsc.getNumbersOfColumns(); i++)
				{
					allDataFromFile[anzahlReihen][i] = st.nextToken();
				}
				
				if(anzahlReihen < fsc.getNumbersOfRows())
				{
					anzahlReihen++;
				}
				
				line = reader.readLine();
			}

Fry
 
G

Guest

Gast
schau mal in die java doku unter StringTokenizer.

dein genutzter konstruktor splittet nur nach dem leerzeichen.

versuch einen konstruktor mit einer delimeter angabe. der trenner für tabluatoren ist imho "\t".
 

Fry

Aktives Mitglied
Hallo,

danke. Aber wenn ich auch mit StringTokenizer(line, "\t") tuts auch nicht.
Wenn ich mit Eclipse debugge, dann sehe ich jedesmal wenn ich einen Schritt weiterlaufen lasse (F6) das er bei Drücken von F6 die nextToken ändert. Das heißt auch bei der Klammer wo eigentlich keine Anweisung ist.

da ist noch was ganz anderes krumm :roll:


Fry
 

The_S

Top Contributor
Hast du vielleicht ne andere Codierung in deiner Datei die du einliest, so dass er den Tabulator net erkennt?
 

Fry

Aktives Mitglied
Hmmm,

ich schreibe die Tabdatei damit:
Code:
...
BufferedWriter schreiber = new BufferedWriter(new FileWriter(PFAD_ZUR_DATEI + id + prefix + ".tab",true));
            for (int i=0; i < getArrayList().toArray().length; i++)
            {
                schreiber.write(getArrayList().toArray()[i] + "\t");
                
            }
            schreiber.newLine();
            schreiber.flush();
            schreiber.close();

Wenn ich die mit Excel oder Wordpat öffne sehe ich auch die tabs....

Fry
 
G

Guest

Gast
Hi,

ich hab dir ein ganz simples beispiel eines StringTokenizers fertig gebaut:

Code:
        BufferedReader br = new BufferedReader(new FileReader("test.txt"));
        String lTempStr = null;
        while (br.ready()) {
            lTempStr = br.readLine();
            StringTokenizer st = new StringTokenizer(lTempStr, "\t");
            while (st.hasMoreTokens())
                System.out.println(st.nextToken());
        }


mit der datei... die leerräume sind tabs.
Code:
1	2	3	4	5	6	7
dies	ist	ein	test

funktioniert einwandfrei, vergleich meinen code mal mit deinem, du wirst da einige unterschiede merken, wie ich durch das ergebnis iteriere. denn ich denke (da ich aus deinem code irgendwie nicht schlau werde) die gehst die sache mit dem tokenizer auch ein wenig falsch an


ansonsten, schau in der java doku mal nach derString.split(...) funktion

gruß
 

Fry

Aktives Mitglied
Hallo "Gast" :wink:

Danke für deine Bemühungen. Soweit habe ich deinen Code verstanden - und er tut das was es bei mir auch tun würde, wenn ich nicht versuchen würde die st.nextToken() in ein Array zu schreiben. Ich habe jetzt deinen Code erweitert um das was ich noch brauche:
Code:
BufferedReader reader = new BufferedReader(new FileReader(pfad));
			int numbersOfRows = 0;
			
	        String line = null;
	        while (reader.ready()) {
	            line = reader.readLine();
	            numbersOfRows++;
	            StringTokenizer st = new StringTokenizer(line, "\t");
	            while (st.hasMoreTokens())
	            	for(int i=0; i < fsc.getNumbersOfColumns(); i++)
	            		allDataFromFile[numbersOfRows][i] = st.nextToken();
	                System.out.println(st.nextToken());
	        }

fsc.getNumbersOfColumns() ist nur eine Zahl die angibt wieviele Spalten die Textdatei hat. Ich möchte jetzt einfach immer den nächsten Token in das Array schreiben. Wenn ich jetzt debugge und mir die for Schleife angucke, dann ändert sich st.nextToken() immer bei jedem Schritt in der Schleife. Sprich wenn er in Zeile 11 ist, dann st.NextToken() schon nicht mehr der erste sondern zweite und so weiter. Wenn ich dann in Zeile 12 bin ist der wieder um einen weitergesprungen ( eigentlich sollte doch sich das nur hier ändern, z.B. numbersOfRows ändert sich ja auch nur wenn ich das explizit aufrufe ). Und in Zeile 13 kommt noch einer hinzu.
Vielleicht eine gute Gelegenheit sich doch split anzuschaun, aber ich hätte es gerne verstanden :roll:

Fry
 
G

Guest

Gast
Fry hat gesagt.:
Code:
BufferedReader reader = new BufferedReader(new FileReader(pfad));
			int numbersOfRows = 0;
			
	        String line = null;
	        while (reader.ready()) {
	            line = reader.readLine();
	            numbersOfRows++;
	            StringTokenizer st = new StringTokenizer(line, "\t");
	            while (st.hasMoreTokens())
	            	for(int i=0; i < fsc.getNumbersOfColumns(); i++)
	            		allDataFromFile[numbersOfRows][i] = st.nextToken();
	                System.out.println(st.nextToken());
	        }

so ich hab mir deinen code mal angesehen, und festgetellt, das du das statement
Code:
st.nextToken()
nicht richtig verstanden zu haben scheinst.

in dieser zeile
Code:
allDataFromFile[numbersOfRows][i] = st.nextToken();
holst du dir ein Element und schreibst das in das array. ich denke das ist soweit in ordnung.

dann gehst du aber hin, und lässt dir das nächste vorhandene token ausgeben
Code:
System.out.println(st.nextToken());
welches NICHT in das array geschrieben wird. d.h. dass du immer ein element überspringst.

desweiteren, verstehe ich nicht, warum du diese for-schleife brauchst. damit "unterwanderst" du den sinn, den st.hasMoreTokens() hat.

ich gehe jetzt mal davon aus, dass deine datei, aus der du auslesen willst, immer die selben anzahl elemente in einer zeile hat. Sollte dem nicht so sein, ist String.split() imho doch die bessere wahl

und noch was, die definierst numberOfRows am anfang mit 0. allerdings, bevor du das erste mal in das array geschrieben hast, erhöhst du diese variable um 1. daher wird dein allDataFromFile[0] nie gefüllt sein. daher wäre es besser die inkrementierung am ende der 1. while-schleife zu machen.

mfg
 

Fry

Aktives Mitglied
Hallo gast,

nochmals danke, das mit dem system.out.println(st.nextToken()); war nur noch ein Fehler meinerseits. Ich habe es jetzt mit split gelöst, schau doch mal hier: (vielleicht hilft es noch wem)

Code:
BufferedReader reader = new BufferedReader(new FileReader(pfad));
			int numbersOfRows = 0;
			
	        String line = null;
	        while (reader.ready()) {
	            line = reader.readLine();
	            String[] tempArray = line.split("\t");
	            for(int i=0; i < fsc.getNumbersOfColumns(); i++)
	            {
	            	allDataFromFile[numbersOfRows][i] = tempArray[i];
	            }
	            numbersOfRows++;
	        }

so hab ich jetzt gelöst und es gibt keine exception mehr. Sieht jetzt so auf den ersten Blick ok aus. Dankeschön an alle!

Fry
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
Gaudimagspam CSV-Datei auslesen in Java Allgemeine Java-Themen 7
B .txt Datei erstellen und auslesen bzw. schreiben Allgemeine Java-Themen 6
N Txt Datei auslesen. Allgemeine Java-Themen 5
O xlsx Datei auslesen mit POI Apache liest keine LEERZELLEN Allgemeine Java-Themen 6
O xlsx Datei auslesen mit POI von Apache wirft seltsamen Fehler. Allgemeine Java-Themen 11
S Hilfe bei dem Auslesen einer YAML Datei Allgemeine Java-Themen 8
T Url aus txt Datei auslesen und öffnen? Allgemeine Java-Themen 4
T Datei Byteweise auslesen Allgemeine Java-Themen 1
T Ini Datei auslesen Allgemeine Java-Themen 3
J Wav-Datei aus .jar auslesen Allgemeine Java-Themen 7
D CSV Datei auslesen Allgemeine Java-Themen 23
J Java JSON-Datei aus .Zip auslesen und Download mit Progress Bar Allgemeine Java-Themen 20
A Auslesen einer Datei sowie ausgeben als Liste in App Allgemeine Java-Themen 5
T datei auslesen ind der richtigen reihenfolge Allgemeine Java-Themen 2
B Compiler-Fehler NullPointerException beim Auslesen von .lang-Datei Allgemeine Java-Themen 3
P Swing Icon von Exe Datei auslesen Allgemeine Java-Themen 8
M datei aufruf datum auslesen Allgemeine Java-Themen 5
D .txt Datei Auslesen Allgemeine Java-Themen 2
H Icon einer Datei auslesen Allgemeine Java-Themen 2
J Problem beim Auslesen einer Datei vom Server Allgemeine Java-Themen 4
C Auslesen + Bearbeiten einer UTF8 Datei Allgemeine Java-Themen 5
A Applet Jar Datei auslesen Allgemeine Java-Themen 3
S String aus Datei-Zeile auslesen Allgemeine Java-Themen 6
F Datei aus JAR auslesen Allgemeine Java-Themen 11
D Swing Datei vom Webserver auslesen Allgemeine Java-Themen 3
W Datei auslesen und die Daten weiter verarbeiten Allgemeine Java-Themen 4
D Pfad aus Ressource-Datei auslesen Allgemeine Java-Themen 7
C Datei auslesen wie unter Linux mit "tail -f" Allgemeine Java-Themen 3
I Große Datei am effektivsten/performantesten auslesen und auswerten? Allgemeine Java-Themen 6
hdi Auslesen der Farbwerte einer Grafik-Datei Allgemeine Java-Themen 4
M Frage zum Auslesen einer Datei auf nem Server Allgemeine Java-Themen 4
K need help ; Werte aus einer Datei auslesen Allgemeine Java-Themen 4
V Erstelldatum einer Datei auslesen Allgemeine Java-Themen 4
M Problem mit Zeichen aus einer Datei auslesen Allgemeine Java-Themen 2
multiholle Länge einer MP3-Datei auslesen Allgemeine Java-Themen 2
R Parser: Datei auslesen, Datei erstellen - Geschwindigkeit Allgemeine Java-Themen 16
G Blind-Datei (Passwort auslesen) Allgemeine Java-Themen 5
A CSV-Datei (Spalt A -> Excel) in Array packen und auslesen Allgemeine Java-Themen 25
Daniel_L Mehrere (XML-)Datei aus einer ZIP-Datei auslesen Allgemeine Java-Themen 4
Daniel_L XML-Datei aus Zip-Datei auslesen, ohne temporär zu entpacken Allgemeine Java-Themen 12
W Variablenbelegung aus Datei auslesen Allgemeine Java-Themen 2
A Auslesen von Strings aus einer xls-Datei Allgemeine Java-Themen 16
P Pfad der gerade ausgeführten Jar-Datei auslesen Allgemeine Java-Themen 2
L Werte in externer Datei speichern und wieder auslesen? Allgemeine Java-Themen 8
R Log-Datei auslesen Allgemeine Java-Themen 8
E Eine .wsp datei in java öffnen auslesen und verändern Allgemeine Java-Themen 4
MQue Datei einlesen/auslesen Allgemeine Java-Themen 4
A Problem mit dem Auslesen aus einer Datei Allgemeine Java-Themen 4
J XML-Datei byteweise einlesen und Kodierung auslesen Allgemeine Java-Themen 4
J Zeilenweise in Datei schreiben/auslesen Allgemeine Java-Themen 3
M Array in eine Datei Schreiben und wieder auslesen Allgemeine Java-Themen 10
H strings in datei verschlüsseln , auslesen mit klartext aber! Allgemeine Java-Themen 2
zilti Datei dekomprimieren und auslesen Allgemeine Java-Themen 16
X Manifest Datei auslesen? Allgemeine Java-Themen 3
W Datei und druckerfreigaben von lokalem Rechner auslesen. Allgemeine Java-Themen 2
K Text-Datei auslesen Allgemeine Java-Themen 3
D Zeilenweises auslesen aus einer Unicode CSV-Datei Allgemeine Java-Themen 7
F PDF-Datei auslesen Allgemeine Java-Themen 5
M Datei immer auslesen können, auch im JAR Allgemeine Java-Themen 7
S BibTex-Datei auslesen Allgemeine Java-Themen 2
H Datei auslesen und in einem Textfeld ausgeben. Allgemeine Java-Themen 8
M MP3 Datei selber parsen/werte auslesen Allgemeine Java-Themen 13
S Tonspuren einer Midi Datei auslesen Allgemeine Java-Themen 2
L Auslesen einer Datei mit Floats Allgemeine Java-Themen 4
L Merkwürdiger Fehler beim auslesen einer Datei Allgemeine Java-Themen 2
M datei informationen auslesen Allgemeine Java-Themen 16
L Werte aus einer Datei auslesen Allgemeine Java-Themen 18
M Auslesen von Daten aus einer txt Datei fast funktionierend Allgemeine Java-Themen 2
I Dateiattribute (Erstellungsdatum aus Datei auslesen) Allgemeine Java-Themen 7
G Einzelne Keys aus Properties-Datei auslesen Allgemeine Java-Themen 4
J Auslesen UTF-8 Datei Allgemeine Java-Themen 3
D Excel-Datei mit Java auslesen Allgemeine Java-Themen 1
S Titel aus HTML-Datei auslesen Allgemeine Java-Themen 5
G Adressen in Datei speichern und wieder auslesen Allgemeine Java-Themen 3
kodela StatusBar-Anzeigen auch in Log-Datei ausgeben Allgemeine Java-Themen 3
G Maven Projekt JAR-Datei Allgemeine Java-Themen 6
E XML - Datei Darstellung in IntelliJ als Baum Allgemeine Java-Themen 2
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
J Filenotfoundexception obwohl Datei existiert Allgemeine Java-Themen 6
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
E Datei verschoben Event Allgemeine Java-Themen 3
D Datei mit "Kohsuke GitHub API" in Repository hochladen Allgemeine Java-Themen 2
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
G JavaFX Maven Projekt als .exe Datei exportieren Allgemeine Java-Themen 10
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
Neumi5694 Datei komprimiert Allgemeine Java-Themen 6
_user_q Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9
E Java .exe Datei mit args starten Allgemeine Java-Themen 2
W Bilder werden in App mit Jar-Datei nicht angezeigt Allgemeine Java-Themen 15
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
M Excel Datei Erstellen Allgemeine Java-Themen 2
E Input/Output Eigene Datei mit java öffnen Allgemeine Java-Themen 9
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17
Tobero Download .jar von github lädt kaputte Datei runter Allgemeine Java-Themen 3
P Bat Datei in Java ausführen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben