Zeilen in Array einlesen und splitten?

coldstone

Bekanntes Mitglied
Kann ich mit der split methode Zeilen in ein array einlesen?


Mein code sieht so aus:

Java:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Grep {
 

      public static void main(String[] args) throws IOException
      {
   
            BufferedReader br = new BufferedReader(new FileReader("C:/test.txt"));
             
            String zeile;
            while( (zeile = br.readLine()) != null )
            {
            String[] teilen = zeile.split(" ");
            System.out.print(teilen[2]);
         
            }
            br.close();     
      }
}

So gibt er mir immer die richtigen Zeilen aus, aber ohne leerzeichen zwischen den Wörtern.
Java:
ichbineinetestzeile

Welchen Ausdruck muss ich hier verwenden?
Java:
...zeile.split(" ");
 

Schesam

Bekanntes Mitglied
Der Ausdruck stimmt. Du splittest die Zeile an den Leerstellen. Allerdings werden diese leerstellen dabei entfernt. Möchtest du sie weider ausgeben mach das Sout so : System.out.print(teilen[2] + " ");
 
X

Xyz1

Gast
So könnte es funktionieren:
Java:
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new StringReader("eins zwei drei\nneun"));
        String zeile;
        while ((zeile = br.readLine()) != null) {
            String[] teilen = zeile.split(" ");

            for (String t : teilen) {
                System.out.println(t);
            }
            System.out.println("");
        }
        br.close();
    }

oder so
Java:
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new StringReader("eins zwei drei\nneun"));
        String zeile;
        while ((zeile = br.readLine()) != null) {
            String[] teilen = zeile.split(" ");

            for (String t : teilen) {
                System.out.print(t + " ");
            }
            System.out.println("");
        }
        br.close();
    }

Ein paar Sachen bei vermeiden, aber für den Anfang, reicht das.

Beim Pfad brauchst du übrigens \\ (zwei Backslashes).
 

Jardcore

Top Contributor
Auf Basis von DerWissende, kannst du dir eine Liste erstellen und dort deine Zeilen einfügen.
Java:
List<String> zeilen = new ArrayList<String>();
while((zeile= br.readLine())!=null){
    zeilen.add(zeile);
}
Du kannst wenn du unbedingt ein Array möchtest, die ArrayList wieder in ein Array umwandeln.
 

Joose

Top Contributor
Stimmt, der speichert jedes 1. oder 2. usw. Wort in ein array. Gibt es denn keinen Ausdruck der die komplette Zeile in ein array speichert?
So ganz verstehe ich deine Aussage nicht.
In deinem Code (vom 1.Post) bekommst du als Rückgabewert von der Methode split(...) ein String[] mit allen Werten deiner eingelesenen Zeile.
Im System.out.println(..) gibst du aber nur einen bestimmten Wert aus dem Array aus.

Sprich deine komplette Zeile ist dann in der Variable "teilen" als String[] gespeichert. Was du dann weiter damit machst bleibt dir überlassen.
 

coldstone

Bekanntes Mitglied
@Joose

Java:
         String[] teilen = zeile.split(" ");

Naja dadurch ich in der
Code:
.....split(" ")....
Methode einen Leerzeichen Ausdruck habe Splittet er ja nach jedem Leerzeichen und speichert es in das array.

Also als Bsp.:
Code:
1. Zeile:  Ich habe heute meine Arbeit erledigt.
2. Zeile:  Wir fahren in den Urlaub.
3. Zeile:  Heute habe ich frei.
4. Zeile:  Morgen sehen wir uns wieder.

Mein Java-Code im ersten Beitrag liest immer das erste Wort und weil danach ein leerzeichen folgt,
wird es im index[0] gespeichert. Und das für Zeile für zeile. So dass bei index[0] folgendes ausgegeben wird:
IchWirHeuteMorgen.
Und bei index[1] immer das zweite Wort der jeweiligen Zeile.
habefahrenhabesehen usw.

Ich will aber dass bei index[0] die ganze Zeile ausgegeben wird, nämlich
Ich habe heute meine Arbeit erledigt.

Ich überlege die ganze Zeit was zwischen den Gänsefüsschen stehen muss, damit er bei Zeilenende splittet.
Code:
.....split(" ")....
Finde aber leider nichts. Vielleicht gibt es ja auch keinen Ausdruck der das Zeilenende ausdrückt.
Code:
.....split("\n")....
habe ich schon versucht aber geht auch nicht.
 

Joose

Top Contributor
Ich will aber dass bei index[0] die ganze Zeile ausgegeben wird, nämlich
Ich habe heute meine Arbeit erledigt.

Du liest doch schon zeilweise ein oder? Warum splittest du dann überhaupt?
Finde aber leider nichts. Vielleicht gibt es ja auch keinen Ausdruck der das Zeilenende ausdrückt.
Code:
.....split("\n")....
habe ich schon versucht aber geht auch nicht.
\n ist schon richtig.
Aber die Methode split erwartet ein Regex und "\" wird in Regex zum Escapen verwendet. Damit du das "\" als Teil des Zeilenumbruchs verwenden kannst musst du es selber escapen. -> \\n

Aber generell: Du liest schon Zeilenweise ein. Daher sehe ich keinen Sinn mehr darin split zu verwenden.
 

Joose

Top Contributor
Wie kann ich denn jede Zeile einzeln in ein array speichern, sodass ich bei index[0] 1. Zeile habe und bei index[2] die dritte Zeile?

Hm ... so ganz verstehe ich nicht wo das Problem liegt.
Du hast doch schon eine String Variable welche deine ganze Zeile enthält. Diese musst du halt in ein Array legen.

Achtung: Wenn du die Zeilen wirklich in ein Array speichern willst, dann wirst du nicht darum herum kommen die Datei 2x zu lesen.
Beim ersten Mal schaust du nach wieviele Zeilen deine Datei hat und legst ein Array mit passender Größe an.
Beim zweiten Mal liest du die Zeilen und schreibst sie ins Array.

Alternative: Du verwendest eine Liste, da diese keine vorgegebene Größe braucht sondern mitwächst.

EDIT: Weitere Alternative: Du liest die komplette Datei auf einmal und teilst den erhaltenen String beim Zeilenumbruch.
Wie du eine Datei auf einmal liest zeigt dir dieser Link: http://stackoverflow.com/questions/14169661/read-complete-file-without-using-loop-in-java

Kann ich mit der split methode Zeilen in ein array einlesen?
Nein. Warum? -> Die split Methode teilt einen String bei dem vorgegeben Zeichen.
 

coldstone

Bekanntes Mitglied
Beim zweiten Mal liest du die Zeilen und schreibst sie ins Array.

Das ist halt mein Problem. Wie lese ich jede zeile einzeln?

Java:
  String zeile;
            while( (zeile = br.readLine()) != null )
            {
         
            System.out.println(zeile);
           
            }

Weil das alleine gibt mir ja den gesamten Text aus.
Irgendwie geht bei mir die Lampe in der Birne nicht an. :D
 

Schesam

Bekanntes Mitglied
br.readLine(); Gibt dir die gesamte Zeile an, nicht den gesamten Text. Heißt, wenn die Methode dir den gesamten Text eingibt, dann sind keine Zeilenumbrüche vorhanden
 

Joose

Top Contributor
Und um Schesam zu ergänzen: Die Schleife + das System.out.prinltn sorgen dafür das jede einzeln eingelesene Zeile auf der Konsole ausgegeben wird.
Am Ende steht auf der Konsole zwar der gesamte Text, er wurde aber nur Zeile für Zeile eingelesen und auch nur Zeile für Zeile auf die Konsole geschrieben.
 

Schesam

Bekanntes Mitglied
Klar, du kannst dir ja auch jede Zeile in ne Liste schreiben und danach mit dem Index die Zeilen rauspicken:

Java:
List<String> liste = new ArrayList<>();
        try {
            BufferedReader br = new BufferedReader(new FileReader("test.txt"));
            String zeile;
            while ((zeile = br.readLine()) != null) {
                liste.add(zeile);
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
       
        System.out.println(liste.get(2));
        System.out.println(liste.get(3));

Btw, wenn du System.out.println(); schreibst, siehst du auf der Konsole nach der Zeile auch den Zeilenumbruch, ansonsten würden sie direkt hintereinander ausgegeben werden, also ohne das ln.
 

Joose

Top Contributor
OK. Verstehe ich das richtig, dass ich gezielt Zeilen einzeln nicht ausgeben kann?

Doch natürlich geht das.

Mit deinem Code liest du deine Datei zeilenweise (sprich Zeile für Zeile) ein.
Anmerkung: Enthält deine Datei aber keine Zeilenumbrüche so befindet sich natürlich der ganze Text in einer Zeile

Mit br.readLine() wird von der aktuellen Leseposition bis zum nächsten Zeilenumbruch gelesen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Input/Output 6000 Zeilen einlesen und String-Array vergleichen? Java Basics - Anfänger-Themen 1
districon 2D Array - Zeilen und Spalten durchsuchen Java Basics - Anfänger-Themen 3
C Zeilen aus einer Datei in Array speichern Java Basics - Anfänger-Themen 4
X wie kann ich in bluej/java einene 2d array mit zahlen fuellen, so dass sich diese in der der zeilen Java Basics - Anfänger-Themen 2
M Array: Zeilen vergleichen Java Basics - Anfänger-Themen 4
R Erste Schritte 2D-Array: Zeilen & Spalten ohne schleife übergeben? Java Basics - Anfänger-Themen 3
E Array mit Zahlen von 1-(Zeilen*Spalten) befüllen Java Basics - Anfänger-Themen 8
O 2D Array - Zeilen-/Spaltenlänge ermitteln Java Basics - Anfänger-Themen 4
M Zeilen aus Textdatei in Array schreiben Java Basics - Anfänger-Themen 2
T null-Zeilen aus einem Array entfernen Java Basics - Anfänger-Themen 4
G CSV auslesen und Zeilen in Array speichern Java Basics - Anfänger-Themen 13
H Leere Zeilen in Textdatei löschen lassen Java Basics - Anfänger-Themen 5
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
dieter000 Kurze Frage kann mir ejmand kurz diesen Code erklären, bzw wie man die zeilen erklärt und so Java Basics - Anfänger-Themen 1
s_1895 zu viele Zeilen in der Main Methode Java Basics - Anfänger-Themen 4
W Anzahl der Zeilen ausgeben lassen Java Basics - Anfänger-Themen 20
crrnogorka Letzte Zeile einer Tabelle "überschreibt" alle anderen Zeilen Java Basics - Anfänger-Themen 1
X Textdatei: zwei-zeilenweise gleiche Zeilen rausschmeißen Java Basics - Anfänger-Themen 21
A Jede x-te Zeile, lösche 10 Zeilen Java Basics - Anfänger-Themen 9
das_leon Alle Zeilen einer CSV-Datei auslesen Java Basics - Anfänger-Themen 1
F Mehrere Zeilen zu einer Zeile zusammenfügen und in eine Datei schreiben Java Basics - Anfänger-Themen 1
A String mit mehreren Zeilen splitten Java Basics - Anfänger-Themen 4
S Java Text splitten mit Tabs, Zeilen, Zeichen und Klammern. Java Basics - Anfänger-Themen 6
D JTable Zeilen löschen Java Basics - Anfänger-Themen 5
H Best Practice JavaFX TableView mit Zell-Rahmen anstelle von Zeilen-Balken Java Basics - Anfänger-Themen 1
V Ergebnisse in 2 Zeilen Java Basics - Anfänger-Themen 4
R Eine Datei mit mehreren Zeilen beschreiben Java Basics - Anfänger-Themen 5
T Zeilen des ListArray nach einem Wort durchsuchen und diese Zeile ausgeben Java Basics - Anfänger-Themen 4
T Exceptions - ausgeführte Zeilen Java Basics - Anfänger-Themen 4
M Input/Output Alle Zeilen auslesen und in Variable speichern Java Basics - Anfänger-Themen 5
J Zeilen aus einer .txt-Datei auslesen und Variablen zuweisen Java Basics - Anfänger-Themen 11
F Problem mit Tabulatoren bei Zeilen zählen einer Textdatei Java Basics - Anfänger-Themen 17
F Textdatei einlesen und Zeilen zählen Java Basics - Anfänger-Themen 10
J Klassen Hilfe bei unbekannten Zeilen bzgl. Klassen / Komponenten Java Basics - Anfänger-Themen 12
T JTable einzelne Zeilen löschen Java Basics - Anfänger-Themen 3
L String extrahieren mit Regular Expression über mehrere Zeilen hinweg Java Basics - Anfänger-Themen 1
T CSV auf Inhalt und Zeilen überprüfen Java Basics - Anfänger-Themen 2
I Datei mit 2 Spalten und millionen Zeilen Java Basics - Anfänger-Themen 19
kaoZ Input/Output Einlesen von mehreren Zeilen Java Basics - Anfänger-Themen 4
J Zeilen unsichtbar Java Basics - Anfänger-Themen 11
3 JLabel - Text in mehreren Zeilen zentrieren Java Basics - Anfänger-Themen 5
L Split + Zeilen einer Datei mit bestimmtem Inhalt löschen Java Basics - Anfänger-Themen 23
V Methoden Zeilen nach bestimmtem Attribut sortieren Java Basics - Anfänger-Themen 4
M Einzelne Zeilen nach Zeichen auslesen Java Basics - Anfänger-Themen 4
T Methoden HILFE! readLine() liest nur ungerade Zeilen?? Java Basics - Anfänger-Themen 2
G JTextArea: nur bestimmte Zeilen anders formatieren Java Basics - Anfänger-Themen 7
B Input/Output bestimmte Zeilen in .txt Dateinen überschreiben Java Basics - Anfänger-Themen 20
G 3422 Zeilen in Eclipse Console Java Basics - Anfänger-Themen 5
L Zeilen und Spalten sortieren Java Basics - Anfänger-Themen 11
K Erste Schritte Eingabetext besteht aus mehreren Zeilen? Java Basics - Anfänger-Themen 3
T BufferedReader mehrere Zeilen einlesen Java Basics - Anfänger-Themen 4
B Zählen bestimmter Zeilen einer .txt Java Basics - Anfänger-Themen 7
N Zeilen vergleichen Java Basics - Anfänger-Themen 7
N Datei mit max 2000 Zeilen schreiben Java Basics - Anfänger-Themen 9
D Input/Output Zeilen aus txt-datei in Java-Liste einfügen Java Basics - Anfänger-Themen 9
K BufferedWriter schreibt die letzten paar Zeilen nicht Java Basics - Anfänger-Themen 5
C Mehrere Zeilen unter ~.showMessageDialog Java Basics - Anfänger-Themen 12
K Java Split mehrere Zeilen Java Basics - Anfänger-Themen 4
H 200000 Zeilen aus Datei einlesen Java Basics - Anfänger-Themen 13
Q LogFile.log einlesen und Werte zwischen 5 zeilen vergleichen Java Basics - Anfänger-Themen 5
P Bestimmte Zeilen einer Datei ermitteln ? Java Basics - Anfänger-Themen 30
B JList und JTable: leere Zeilen bei listfiles(); Java Basics - Anfänger-Themen 5
M Zeilen aus String exportieren Java Basics - Anfänger-Themen 5
P Unterschied dieser 2 code Zeilen Java Basics - Anfänger-Themen 12
A Anzahl Zeilen eines Arrays bestimmen Java Basics - Anfänger-Themen 10
J Zeilen eines Arrays vergleichen Java Basics - Anfänger-Themen 2
S .txt einlesen->Zeilen ersetzen->neu.txt speichern Java Basics - Anfänger-Themen 13
R String über mehrere Zeilen Java Basics - Anfänger-Themen 15
M Verständnis einiger Zeilen Java Basics - Anfänger-Themen 4
S Zeilen zählen Java Basics - Anfänger-Themen 7
Ollek Bestimmte Zeilen aus einer HTML Datei lesen Java Basics - Anfänger-Themen 8
C Zeilen aus einer Datei auslesen Java Basics - Anfänger-Themen 4
H String/StringBuffer nach zeilen aufteilen Java Basics - Anfänger-Themen 2
K Wie kann ich alle Zeilen in eineR Datenbank zählen? Java Basics - Anfänger-Themen 13
JFeel-x Zeilen eines JEditorPanes Java Basics - Anfänger-Themen 2
0 CSV Import - Zeilen, Spalten Java Basics - Anfänger-Themen 15
P String über mehrere Zeilen definieren Java Basics - Anfänger-Themen 3
G Datei zeilen anhängen Java Basics - Anfänger-Themen 3
A Scanner liest nur 999 Zeilen ein Java Basics - Anfänger-Themen 5
B Zeilen in Textdatei löschen Java Basics - Anfänger-Themen 2
D Datei einlesen, zeilen ignorieren, probleeem Java Basics - Anfänger-Themen 7
A Anzahl der Zeilen in Textdatei Java Basics - Anfänger-Themen 7
G Zeilen in Eclipse einblenden Java Basics - Anfänger-Themen 2
M Zeilen auslesen Java Basics - Anfänger-Themen 12
H Streams etc. erster Versuch Zeilen aus einer Datei zu lesen Java Basics - Anfänger-Themen 6
L In einer Tabelle Zeilen loeschen Java Basics - Anfänger-Themen 4
D Auf Zeilen eines zweidimensionalen Arrays zugreifen Java Basics - Anfänger-Themen 3
D txt nach Zeilen splitten. Java Basics - Anfänger-Themen 9
G Anzahl der Zeilen in einer Datei Java Basics - Anfänger-Themen 7
T die letzten X zeilen einer datei entfernen Java Basics - Anfänger-Themen 19
E was bedeuten @Zeilen Java Basics - Anfänger-Themen 4
T Einlesen von einzelnen Zeilen Java Basics - Anfänger-Themen 2
E Automatischer Zeilen-Umbruch bei JTextArea Java Basics - Anfänger-Themen 4
G zeilen aus text datei löschen Java Basics - Anfänger-Themen 6
ARadauer zeilen einer text datei ermitteln Java Basics - Anfänger-Themen 6
S Anzahl von zeilen einer Datei bestimmen. Java Basics - Anfänger-Themen 4
J Tabelle mit mehreren Zeilen dynamisch aufbauen Java Basics - Anfänger-Themen 2
F Zeilen und Spalten in JTable Selektieren Java Basics - Anfänger-Themen 2
S In einer CSV Datei leere Zeilen ignorieren Java Basics - Anfänger-Themen 6
W int aus Zeilen einer Textdatei Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben