Daten aus txt-datei einzeln nach Spalten einlesen

Status
Nicht offen für weitere Antworten.

Spoocky

Aktives Mitglied
Ich würde gerne aus einer txt-Datei einzelne Werte (Zahlen), die in dieser txt-Datei in Spalten angeordnet sind (zeilenweise durch Tabs getrennt), einlesen.
Habe schon daran gedacht, dieses byteweise zu versuchen, nur fehlt mir da noch die konkrete Idee und der Ansatz.

Ist es möglich, jedes einzelne Zeichen in einer solchen txt-Datei mit Hilfe der Stelle, an der dieses Zeichen innerhalb der Zeile steht, anzusprechen?

Vielen Danke schonmal...
 
S

SlaterB

Gast
sofern du nicht auf was fertiges hinauswillst,
sollte es wohl kaum Probleme bei einer eigenen Umsetzung geben,

Zeilenumbrüche erkennst du an \n, \r, \n\r oder sonst was ähnliches (Datei zeichenweise anschauen),
mit einen BufferedReader kannst du die Datei gleich zeilenweise einlesen,

dann entweder alle Zeichen selber zählen oder z.B. einen StringTokenizer einsetzen, der speziell nach Tabs trennen kann
 

Spoocky

Aktives Mitglied
ok, damit weiss ich, dass ich auf der richtigen spur bin.

mir ist noch nicht ganz klar wie der syntax bzw. der genaue aufbau ist, um an die einzelnen zeichen ranzukommen.

Womit muss ich die Datei öffen und wie zähle ich von zeichen zu zeichen?
 
S

SlaterB

Gast
also wie man eine Datei einliest erkläre ich hier nicht ;)

da gibts ja soviele Details dazu, da solltest du ein ganzes Tutorial zu lesen,
in Java-Insel stehts auf den ersten Blick bisschen kompliziert bzw. knapp (ohne BufferedReader)
http://www.galileocomputing.de/openbook/javainsel5/javainsel12_000.htm#Xxx999378
ion der FAQ gar nicht..,
aber hier hab ich noch ein Beispiel gefunden:
http://www.java-forum.org/de/viewtopic.php?t=32217

ansonsten zählen:
du hast Strings, da kannst du dir jedes Zeichen anschauen oder nach bestimmten Zeichenkette suchen, oder das ganze in ein char-Array umwandeln oder was immer du willst,

wenn du auch diese Befehle alle nicht kennst dann schaue dir z.B. die API zur Klasse String an,
http://java.sun.com/j2se/1.5.0/docs/api/
 

Spoocky

Aktives Mitglied
ich glaube, genau hier ist aber knackpunkt! Es wäre für mich wichtig, genau zu wissen, wie eine Datei zeichenweise eingelesen wird. Das wird mir einiges erleichtern.
 

The_S

Top Contributor
Spoocky hat gesagt.:
Es wäre für mich wichtig, genau zu wissen, wie eine Datei zeichenweise eingelesen wird.

Code:
StringBuilder datei = new StringBuilder();
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("datei.extension"));
int zeichen = 0;
while ((zeichen = bis.read()) != -1) {
   datei.append((char)zeichen);
}
bis.close();
 

Spoocky

Aktives Mitglied
Danke für den Code-Schnipsel. Er funktioniert auch ganz gut, nur kann man nicht jedes einzelne Zeichen ansprechen, das heisst, wenn man eine Datei, in der nach folgender Art Zahlen folgen [ 2.3445 4.6784 67.3244 23.4355 usw.] und diese auch untereinander angeordnet sind, man praktisch 10 Spalten hat, ist jetzt ds Ziel, die einzelnen Werte aus den Spalten 3, 6 und 7 aus der Datei zu lesen und nur diese Werte in den genannten Spalten.

Aber ich bin froh, dass ich hier dem Problem auf die Spur komme...
 

Murray

Top Contributor
Die Datei hat also beliebig viele Zeilen, die jeweils genau 10 durch Whitespace getrennte Werte enthalten? Dann sollte man die Datei vielleicht besser zeilenweise lesen und die einzelnen Zeilen dann zerlegen:
Code:
BufferedReader in = new BufferedReader( new FileReader( "datei.ext"));
String line = null;
while((line = in.readLine()) != null)
{
   //---Zeile spaltenweise aufteilen
   String[] cols = line.split( "\\s+"); //--- regex "\s" -> whitespace char, qualifier "+" -> one ore more times

   //--- Spalten 3, 6 u. 7 extrahieren
   String col3 = cols[2];
   String col6 = cols[5];
   String col7 = cols[6];

   /* ... */

}
 
G

Guest

Gast
ich habe jetzt folgendes kleines programm:

Code:
import java.io.*;
public class lesen {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		BufferedReader in = new BufferedReader( new FileReader( "test.dat"));
		String line = null;
		while((line = in.readLine()) != null)
		{
		   //---Zeile spaltenweise aufteilen
		   String[] cols = line.split( "\\s+"); //--- regex "\s" -> whitespace char, qualifier "+" -> one ore more times

		   //--- Spalten 3, 6 u. 7 extrahieren
		   String col3 = cols[2];
		   String col6 = cols[5];
		   String col7 = cols[6];

		   /* ... */

		}
	}

}

bei dem folgende Fehler auftreten:

Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Unhandled exception type FileNotFoundException
Unhandled exception type IOException

at lesen.main(lesen.java:9)

Ich habs jetzt fast geschafft, es müssen nur noch die letzten fehler behoben werden...
 

Murray

Top Contributor
Und das ist sooo schwierig? Der Compiler meckert, dass hier zwei Exceptions nicht behandelt werden, die von irgendwelchen Anweisungen in diesem Code als sog. "checked Excpetions" deklariert worden sind. Damit soll sichergestellt werden, dass bestimmte fehlerträchtige Operationen wie hier das Öffnen einer Datei (deren Existenz ja erst zur Laufzeit geprüft werden kann) auch mit einer hinreichenden Fehlerbehandlung versehen werden.
Also z.B.:
Code:
import java.io.*;
public class lesen {

   public static void main(String[] args) {
      try {
        BufferedReader in = new BufferedReader( new FileReader( "test.dat"));
        String line = null;
        while((line = in.readLine()) != null)
        {
           //---Zeile spaltenweise aufteilen
           String[] cols = line.split( "\\s+"); //--- regex "\s" -> whitespace char, qualifier "+" -> one ore more times

           //--- Spalten 3, 6 u. 7 extrahieren
           String col3 = cols[2];
           String col6 = cols[5];
           String col7 = cols[6];

           /* ... */
        }
      } catch ( FileNotFoundException fe) {
         System.err.println( "Datei test.dat nicht gefunden");
         fe.printStackTrace();
      } catch ( IOException ie) {
         System.err.println( "Fehler beim Lesen der Datei test.dat");
         ie.printStackTrace();
      }
   }

}
/EDIT: code-tags
/EDIT2: kann mir jemand sagen, was hier klemmt? In der Vorschau werden die Code-Tags ausgewertet, und alles sieht gut aus, aber nach dem Absenden ist hier wieder alles unformatiert - ein Fall für die Admins, oder einfach schon zu spät??
 

Spoocky

Aktives Mitglied
ok, soweit geht das jetzt auch.

jetzt gibts nur noch ein letztes problem mit dieser zeile:

Code:
while((line = in.readLine()) != null)

hier ist die fehlermeldung "in cannot be resolved"

muss noch irgendetwas deklariert werden?
 

Murray

Top Contributor
Seltsam - in wird doch zwei Zeilen darüber deklariert und intialisiert; zeig nochmal den aktuellen Code.
 

Spoocky

Aktives Mitglied
hier der aktuelle code:

Code:
import java.io.*;
public class lesen {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
		BufferedReader in = new BufferedReader(new FileReader( "test.dat"));
		
		} catch (Exception e) {System.out.println (" Fehler 002");
		}
		String line = null;
		while((line = in.readLine()) != null)
		{
		   //---Zeile spaltenweise aufteilen
		   String[] cols = line.split( "\\s+"); //--- regex "\s" -> whitespace char, qualifier "+" -> one ore more times

		   //--- Spalten 3, 6 u. 7 extrahieren
		   String col3 = cols[2];
		   String col6 = cols[5];
		   String col7 = cols[6];

		   /* ... */

		}
	}

}
 

Murray

Top Contributor
Mit einem try-cachc-Block eröffnet man sozusagen einen neuen Namensraum; alles, was darin deklariert wird, ist auch nur in diesem Block sichtbar.
Entweder schreibst Du das catch erst ganz am Ende, oder Du deklarierst die Variable in vor dem (ersten) try-catch-Block
 

Spoocky

Aktives Mitglied
Code:
import java.io.*;
public class lesen {

public static void main(String[] args) {
	try {
		BufferedReader in = new BufferedReader( new FileReader( "test.dat"));
		String line = null;
		while((line = in.readLine()) != null)
		{
			//---Zeile spaltenweise aufteilen
			String[] cols = line.split( "\\s+"); //--- regex "\s" -> whitespace char, qualifier "+" -> one ore more times

			//--- Spalten 3, 6 u. 7 extrahieren
			String col3 = cols[2];
			String col6 = cols[5];
			String col7 = cols[6];

			System.out.println (col3);

			/* ... */
		}
	} catch ( FileNotFoundException fe) {
		System.err.println( "Datei test.dat nicht gefunden");
		fe.printStackTrace();
		} catch ( IOException ie) {
			System.err.println( "Fehler beim Lesen der Datei test.dat");
			ie.printStackTrace();
			}
}

}

ok, soweit jetzt alles erstmal klar. Nur gibts jetzt ne neue Fehlermeldung:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at lesen.main(lesen.java:14)

Läuft da ne variable über?
 

Murray

Top Contributor
Vermutlich ist dann in der Datei mindestens eine Zeile, die dem Spaltenformat nicht genügt. Die Exception kommt aus dem Zugriff auf das cols-Array. Lass Dir doch mal in der while-Schleife nach dem split mit
Code:
System.out.println( "line " + line + " -> " + cols.length + " cols");
die Anzahl der Spalten ausgeben.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
S Daten aus eigenständiger .class-Datei abrufen Java Basics - Anfänger-Themen 1
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
D Daten mit Apache POI in eine Excel Datei schreiben Java Basics - Anfänger-Themen 5
T JTable Daten aus txt datei Java Basics - Anfänger-Themen 3
C Datei mit Daten einlesen und höchsten wert der zweiten Spalte ermitteln Java Basics - Anfänger-Themen 1
S Daten aus anderen Dateien in neue Datei einlesen Java Basics - Anfänger-Themen 3
J Daten von einer PHP Datei ablesen Java Basics - Anfänger-Themen 1
R csv-Datei auslesen und ausgelesene Daten in neue csv-Datei speichern Java Basics - Anfänger-Themen 2
J Input/Output Daten in Datei schreiben und auslesen Java Basics - Anfänger-Themen 23
E Text Datei Daten Auslesen und Schreiben Java Basics - Anfänger-Themen 3
T Input/Output Daten in txt-Datei schreiben - Fehlermeldung Java Basics - Anfänger-Themen 7
S Array Daten in Binär Datei schreiben/lesen Java Basics - Anfänger-Themen 11
M Daten in CSV Datei Speichern Java Basics - Anfänger-Themen 3
K Daten in eine Text datei schreiben !!!! Java Basics - Anfänger-Themen 6
A Programm mit Daten einer Datei testen Java Basics - Anfänger-Themen 4
T Speicherprobleme von daten in einer datei Java Basics - Anfänger-Themen 5
P JSP - Daten aus externer Datei auslesen und anzeigen Java Basics - Anfänger-Themen 3
S Daten aus einer JTable in eine .doc-word- datei exportieren? Java Basics - Anfänger-Themen 7
A daten in datei suchen Java Basics - Anfänger-Themen 3
M Aus .txt Datei Daten in Array speichern Java Basics - Anfänger-Themen 3
D ausgabe von daten in txt/csv datei Java Basics - Anfänger-Themen 5
M Daten in Datei speichern Java Basics - Anfänger-Themen 8
T Daten in einer Datei überschreiben Java Basics - Anfänger-Themen 13
S Daten zeilenweise aus Datei einlesen Java Basics - Anfänger-Themen 7
I Daten aus Datei auslesen Java Basics - Anfänger-Themen 11
F Falsche Daten aus Datei Java Basics - Anfänger-Themen 2
S StringTokenizer: Daten aus Datei auslesen Java Basics - Anfänger-Themen 11
R ObjectOutputStream -> Daten an Datei anhängen Java Basics - Anfänger-Themen 3
B Daten aus Datei lesen und in JTable anzeigen Java Basics - Anfänger-Themen 49
T Daten aus einer .csv Datei in einen Vector einlesen Java Basics - Anfänger-Themen 3
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
W Daten in Echtzeit übernehmen Java Basics - Anfänger-Themen 5
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
I H2 Datenbank starten / Daten in File speichern Java Basics - Anfänger-Themen 25
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
E fehlermeldung bei richtigen login daten Java Basics - Anfänger-Themen 7
C Java Funktion: externe Daten vom Internet einbinden Java Basics - Anfänger-Themen 2
P Schiebefix - ArrayList überschreibt Daten Java Basics - Anfänger-Themen 3
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
E Wie gebe ich alle Daten zwischen zwei Zeitpunkten aus? Java Basics - Anfänger-Themen 2
M Tabellen- Daten laden Java Basics - Anfänger-Themen 2
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A Literale für primitive Daten Typen Java Basics - Anfänger-Themen 4
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
D Sportwetten Daten Atomatisch analysieren um optimale Strategie zu erhalten Java Basics - Anfänger-Themen 6
S Java Daten in Excel speichern Java Basics - Anfänger-Themen 1
S Daten speichern, ohne Datenbank Java Basics - Anfänger-Themen 8
L Daten aus ArrayList in Datenbank durchsuchen Java Basics - Anfänger-Themen 5
Shallty Daten speichern und ändern? Java Basics - Anfänger-Themen 32
M Sqlite table löschen und daten einfügen Java Basics - Anfänger-Themen 5
S Binäre-Suche bei unsortierten Daten Java Basics - Anfänger-Themen 7
N Was passiert wenn wir Daten auf der Festplatte abspeichern wollen? bzgl. BufferStreams Java Basics - Anfänger-Themen 9
T Daten von Objekten speichern Java Basics - Anfänger-Themen 7
A Minesweeper - Daten Java Basics - Anfänger-Themen 46
A Eingelesene Daten in Array(Liste) abspeichern? Java Basics - Anfänger-Themen 18
S Daten aus zwei Verschiedenen Tabellen in eine ArrayListe Java Basics - Anfänger-Themen 4
WPS1000 Input/Output Wie aktiviere ich den Daten Transfer von der RS232 in meine Java Applikation Java Basics - Anfänger-Themen 2
R Eigenes Protokoll zur Übermittlung von Daten zum Webserver? Java Basics - Anfänger-Themen 4
A Reader wohin werden Daten gespeichert? Java Basics - Anfänger-Themen 7
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
E Daten dem Super Aufruf übergeben Java Basics - Anfänger-Themen 3
M jTabel mit Daten Füllen Java Basics - Anfänger-Themen 5
M Wie erzeuge ich die Differenz von zwei Daten in Stunden?? Java Basics - Anfänger-Themen 2
S Daten lesen und speichern Java Basics - Anfänger-Themen 26
S JTable mit Daten füllen Java Basics - Anfänger-Themen 7
L Java Programm zum Auswerten von Daten Java Basics - Anfänger-Themen 11
H Passwortmanager, Sicherheit der Daten Java Basics - Anfänger-Themen 12
G Best Practice Wie große "Tabellen" effizient durchsuchen und Daten händeln? Java Basics - Anfänger-Themen 15
M Best Practice Daten-Import /Trabsfomration aus Textdatei Java Basics - Anfänger-Themen 12
R JTable Suchfunktion mit SQL Daten Java Basics - Anfänger-Themen 2
E Daten gehen nicht in Datenbank Java Basics - Anfänger-Themen 14
M Erste Schritte Speichern von mehreren Daten Java Basics - Anfänger-Themen 3
J Daten einer Textdatei in ein JTable importieren. Java Basics - Anfänger-Themen 3
F Daten von Thread an den aufrufenden zurückgeben Java Basics - Anfänger-Themen 22
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
N Erste Schritte Dedicated Server \ Senden und Empfangen von Daten/Befehlen Java Basics - Anfänger-Themen 2
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
D NPE beim laden von Daten aus MySQL Java Basics - Anfänger-Themen 9
P Einlesen von Daten via BufferedReader Java Basics - Anfänger-Themen 4
P Methoden ausgelesene (CSV-) Daten in Liste einer anderen Klasse einlesen Java Basics - Anfänger-Themen 0
F Daten aus Excel-Tabelle in Java importieren Java Basics - Anfänger-Themen 15
F Http Post von mehreren Daten Java Basics - Anfänger-Themen 5
F Daten auf Webserver laden - wiederholen bei Fehler Java Basics - Anfänger-Themen 0
W Best Practice problemabhängige Persistentmachung von Daten Java Basics - Anfänger-Themen 6
P Daten von Internetseite auslesen Java Basics - Anfänger-Themen 10
N Daten/Formular per POST an Firefox/Browser senden Java Basics - Anfänger-Themen 7
T printf Daten aus der Tabelle in Excel übernehmen Java Basics - Anfänger-Themen 5
P zweidimensionales Array anlegen und mit DB-Daten füllen Java Basics - Anfänger-Themen 14
V Einlesen von Daten Java Basics - Anfänger-Themen 8
J TableView zeigt keine Daten an Java Basics - Anfänger-Themen 14
J Daten im Programm speichern Java Basics - Anfänger-Themen 14
N Interface Daten einem Implementierten Interface zuweisen Java Basics - Anfänger-Themen 37
O Probleme mit CSV Daten Java Basics - Anfänger-Themen 10
M Arrays: Trennung von Daten und Darstellung Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben