Daten lesen und speichern

schamamutz

Mitglied
Hi Leute,

ich bin ein blutiger Anfänger in Java und falls es dieses Thema schon im Forum gibt, bitte ich das zu entschuldigen, denn ich habe es nicht gefunden. Ihr könnt mich dann gerne auf das Thema hinweisen :), oder wenn das alles Pille-Palle ist und ihr mir einige Schlüsselwörter an den Kopf werft, werde ich das alles gerne nachlesen, aber ich komme nicht weiter :(

Ich möchte eine Textdatei öffnen und in einzelne Fragmente aufsplitten und diese speichern.

Java:
public class Main {
    public static void main(String[] args) throws IOException {
        FileReader f = new FileReader("C:\\Users\\u\\Desktop\\test.txt");
        BufferedReader b = new BufferedReader(f);
        //n zählt die Zeilen der Datei
        int n = 0;
        //cnt = Inhalt
        String cnt = b.readLine();
        //bis Ende der Datei erreicht ist
        while(cnt != null) {
            n++;
            cnt = b.readLine();
  
        }
        f.close();
      
        //String Array für n-Elemente
        String[] content = new String[n];
        f = new FileReader("C:\\Users\\u\\Desktop\\test.txt");
        b = new BufferedReader(f);              
        for(int i = 0; i<n; i++) {
              
            content[i] = b.readLine();
          
                  }
        f.close();
     //gibt wieder aus
       for(String x:content) {
           System.out.println(x);
                       
            }
   }

}

Nach meinem Verständnis müsste ich jetzt hier:

Code:
        //String Array für n-Elemente
        String[] content = new String[n];
        f = new FileReader("C:\\Users\\u\\Desktop\\test.txt");
        b = new BufferedReader(f);             
        for(int i = 0; i<n; i++) {
             
            content[i] = b.readLine();
         
                  }
        f.close();

ansetzen, um wirklich Zeile für Zeile wiederzugeben, aber wie? :(

Danke :)
 

krgewb

Top Contributor
Bei mir funktioniert dein Programm. Vielleicht hast du die import-Anweisungen vergessen?
Java:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
 

schamamutz

Mitglied
die sind vorhanden, habe sie nur nicht mit rein kopiert. Mein Problem ist jetzt auch nicht, dass das Programm nicht funktioniert (da habe ich jetzt wirklich mehrere Methoden dank Youtoube kennengelernt und ich finde diese auch sehr einleuchtend), sondern ich möchte jetzt, z.B.: nur die Zeile 3 und 4 aus meinem Text (der Text hat 100 Zeilen) wiedergeben lassen.

Jetzt müsste ich doch: (ich lerne nach dem Motto: learning by doing und es sind auch keine Hausaufgaben, daher Fehler nicht so ernst nehmen :))

in meiner for-schleife eine while-schleife rein die bei Zeile 3 stoppt


Java:
for(int i = 0; i<n; i++) {
           
            while((cnt = b.readLine()) != null) {
                                           
                                     String[] line3 = cnt.split(" ; ");
                                      .....?
                                      }
 

krgewb

Top Contributor
Du hast doch die Zeilen in content gespeichert. Dann kannst du dir beliebige Zeilen ausgeben lassen.
Java:
System.out.println(content[2]);
System.out.println(content[3]);
 

schamamutz

Mitglied
Die Begeisterung war auch ziemlich schnell wieder weg :) Nachdem ich es ziemlich leicht hinbekommen habe, mir eine ArrayListe erstellen zu lassen und diese mit meinem gewünschten Inhalt zu befüllen, habe ich dabie noch ein paar Fragen:
Code:
String[] content = new String[n];
        f = new FileReader("C:\\Users\\u\\Desktop\\test.txt");
        b = new BufferedReader(f);           
        for(int i = 0; i<n; i++) {
       
                                                   
            content[i] = b.readLine();
               
                  }
   
        //wieso setzt/gibt er den kompetten Inhalt mit [... ,...,....,] (den Zeilenumbruch macht) wieder aus?
        List<String> list1 = new ArrayList<>();
        list1.add(content[2]);                         //wie kann ich \n direkt an den content[2] setzen?
        list1.add("\n");
        list1.add(content[3]);
        list1.add("\n");
        list1.add(content[40]);
        list1.add("\n");
   
    
 
        System.out.println(list1);

Außerdem wie kann ich in dem content eine von bis suche machen?
Ich habe "Hallo" und "Peter" z,b.: 4x in meinem Text.
Also er soll bei "Hallo" starten und bei "Peter" wieder ändern und mir den in eine Liste packen.
Zwischen "Hallo" und "Peter" ist der Inhalt allerdings verschieden. Wieso klappt das nicht?

Java:
    String[] content = new String[n];
        f = new FileReader("C:\\Users\\u\\Desktop\\test.txt");
        b = new BufferedReader(f);             
        for(int i = 0; i<n; i++) {
                         
                    content[i] = b.readLine();
                    List<String> list1 = new ArrayList<String>();
                    List<String> list2 = new ArrayList<String>();
                    List<String> list3 = new ArrayList<String>();
                    List<String> list4, list5 = new ArrayList<String>(); //<---- so funktioniert das auch nicht, kann man das zusammenfassen? :D
                    ImageIcon icon1 = new ImageIcon("C:\\Users\\uipduip\\Desktop\\12.jpg");
                 
                    if(content[i].startsWith("Hallo") && content[i].endsWith("Peter")) {
                        list1.add(content[i]);
                    }
                 
                    if(content[i].contains("Drama")) {
                        list2.add(content[i]);
                     
                    }
                 
                    if(content[i].contains("Queen")) {
                        list3.add(content[i]);
                     
                    }
                                 
                             
                    System.out.println(list3);
                    System.out.println(list2);
                 
                                     
                  } 
        
//wieso kann ich hier nicht mit dem content[i] arbeiten und wieso funktioniert es dann mit der ArrayListe oben? Wie kann ich mir die Variable extrahieren?      

        f.close();

 
    }

Danke :)
 
Zuletzt bearbeitet:

SchwarzWeiß

Bekanntes Mitglied
Das liegt daran, dass die toString-Methode einer Liste nunmal so lautet:

Java:
 public String toString() {
        Iterator<E> it = iterator();
        if (! it.hasNext())
            return "[]";

        StringBuilder sb = new StringBuilder();
        sb.append('[');
        for (;;) {
            E e = it.next();
            sb.append(e == this ? "(this Collection)" : e);
            if (! it.hasNext())
                return sb.append(']').toString();
            sb.append(',').append(' ');
        }
    }

(nachzulesen in der Klasse AbstractCollection)

Willst du einfach nur den Inhalt einer Liste ausgeben, schreibe das daher am besten so:
Java:
for(String s : list1){
  System.out.println(s);
}
 

SchwarzWeiß

Bekanntes Mitglied
Außerdem wie kann ich in dem content eine von bis suche machen?
Ich habe "Hallo" und "Peter" z,b.: 4x in meinem Text.
Also er soll bei "Hallo" starten und bei "Peter" wieder ändern und mir den in eine Liste packen.
Zwischen "Hallo" und "Peter" ist der Inhalt allerdings verschieden. Wieso klappt das nicht?
Das habe ich ehrlich gesagt jetzt nicht ganz verstanden, was du genau machen willst, was meinst du mit ändern, was genau willst du in die Liste packen? Oder hat sich das inzwischen erledigt?
 

schamamutz

Mitglied
Hab ich auch gelesen, dass die Frage nicht klar zu verstehen ist, aber habe den Bearbeitungsbuttom nicht gefunden :rolleyes:o_O
z.b:
Hallo, a,b,c, Peter
Hallo d,e,a, Peter
Hallo f,g,h, Peter
Hallo x,y,z, Peter

Er soll nur zwischen "Hallo" und "Peter" suchen.

Und das ganze Thema, dachte ich ich hätte es vertsanden, ist aber nicht so :)

Code:
for(String s : list1){
}

Also für doofe heisst das doch, dass meine list1 den String s befüllt oder?
Ich hatte es geschafft meine Liste mit meinem bestimmten Inhalt zu befüllen, jetzt wollte ich meine Liste durchsuchen und eine andere Liste damit befüllen, wieso erhalte ich kein Ergebnis?

Code:
for(String s : list1){
if(s.contains("Hallo")) {
             list4.add(s);
}
}
 

SchwarzWeiß

Bekanntes Mitglied
Also für doofe heisst das doch, dass meine list1 den String s befüllt oder?
hier kannst du nachlesen, was genau passiert: http://openbook.rheinwerk-verlag.de/javainsel9/javainsel_13_002.htm
Aber ja, bei jedem Durchlauf wird s das nächste Element übergeben. Wenn list1 also Strings enthält, in denen das Wort Hallo vorkommt, sollte dieser String in list4 gespeichert werden. Klappt das nicht, hast du den Inhalt von list4 schon mal ausgegeben?
 

SchwarzWeiß

Bekanntes Mitglied
Java:
 String s = "Hallo, a,b,c, Peter";
    if (s.contains("Hallo") && s.contains("Peter")) {
      s = s.replace("Hallo", "");
      s = s.replace("Peter", "");
    }

Das würde den Inhalt aus Hallo und Peter schneiden, mit der Bedingung, vor Hallo und nach Peter steht nichts.
 

schamamutz

Mitglied
oh man ja sorry ...... ich habe so viele Listen erstellt und ausprobiert wie was funktioniert, dass ich die list1 gar nicht mehr befüllt hatte .... schande auf mein Haupt :D funktioniert, jetzt frage ich mich, was ich gestern getan habe :D
 

schamamutz

Mitglied
Java:
 String s = "Hallo, a,b,c, Peter";
    if (s.contains("Hallo") && s.contains("Peter")) {
      s = s.replace("Hallo", "");
      s = s.replace("Peter", "");
     list1.add(s); <------------- um zu adden richtig?
    }

Das würde den Inhalt aus Hallo und Peter schneiden, mit der Bedingung, vor Hallo und nach Peter steht nichts.

vor "Hallo" und nach "Peter" steht etwas. aber auch gut zu wissen, dass es dann da auch wieder uinterschiede gibt :D

Ich bekomme wieder eine leere Liste und dieses mal habe ich die Richtige genommen(2mal überprüft :D)
 
Zuletzt bearbeitet:

SchwarzWeiß

Bekanntes Mitglied
Java:
    String start = "Hallo";
    String end = "Peter";

    String s = "aaaa Hallo a,b,c Peter aaaa";
    if (s.contains(start) && s.contains(end)) {

      int indexHallo = s.indexOf(start);
      int indexPeter = s.indexOf(end);
      s = s.substring(indexHallo + start.length(), indexPeter);
    }

Dann sollte es so funktionieren.
 
Zuletzt bearbeitet:

schamamutz

Mitglied
ah ok, diese Methode funktioniert, wenn ""aaaa Hallo a,b,c Peter aaaa" im String hintereinander stehen.
Wenn aber ""aaaa Hallo a,b,c Peter aaaa , aaaa Hallo d,e, f, Peter, aaaa" gibt er mir "d ,e ,f" nicht aus.

Das funktioniert schonmal nicht :D

Java:
if(content[i].contains(start) && content[i].contains(end)) {
                        if(content[i].contains(start) && content[i].contains(end)) {
                            int indexHallo = content[i].indexOf(start);
                            int indexPeter = content[i].indexOf(end);
                            content[i] = content[i].substring(indexHallo + start.length(), indexPeter);
                            list5.add(content[i]);
                        }
                       
                        int indexHallo = content[i].indexOf(start);
                        int indexPeter = content[i].indexOf(end);
                        content[i] = content[i].substring(indexHallo + start.length(), indexPeter);
                        list5.add(content[i]);
                    }

Wieso funktioniert diese Methode nicht, wenn der String so geschrieben ist:
"aaaa
Hallo
a
b
c
Peter
aaaa
"

?
 

krgewb

Top Contributor
Hab ich auch gelesen, dass die Frage nicht klar zu verstehen ist, aber habe den Bearbeitungsbuttom nicht gefunden :rolleyes:o_O
Der verschwindet nach 30 Minuten.

Wenn aber ""aaaa Hallo a,b,c Peter aaaa , aaaa Hallo d,e, f, Peter, aaaa" gibt er mir "d ,e ,f" nicht aus.

Das funktioniert schonmal nicht :D
Also soll es auch mehrere Vorkommen pro Zeile erkennen?

Wieso funktioniert diese Methode nicht, wenn der String so geschrieben ist:
"aaaa
Hallo
a
b
c
Peter
aaaa
"

?
Also untereinander?
 
Zuletzt bearbeitet:

krgewb

Top Contributor
Achso! Content ist mehrere Zeilen lang. Derzeit speicherst du jede Zeile in einem separaten String. Du kannst auch alle in einem String speichern.

"aaaa Hallo a,b,c Peter aaaa
aaaa
Hallo
z
y
x
Peter
aaaa"

ist dann:
"aaaa Hallo a,b,c Peter aaaa\naaaa\nHallo\nz\ny\nx\nPeter\naaaa"

Also musst du nur noch deine []^n - Idee umsetzen.
 
Zuletzt bearbeitet:

SchwarzWeiß

Bekanntes Mitglied
Naja wie der Name schon sagt, testet startsWith ob der String mit dem mitgegebenen Wert anfängt. Endswith testet, ob der String mit dem mitgegebenen Wert aufhört.
z.B.
Java:
String s = "Hallo";
s.endsWith("o")  //true
s.endsWith("h") // false
s.startsWith("H") // true
s.startsWith("allo"//false
 

schamamutz

Mitglied
Deshalb ja, wieso nimmt man diese Methode dann nicht einfach?

Code:
 String s = "Hallo, a,b,c, Peter";
    if (s.startsWith("Hallo") && s.endsWith("Peter")) {
     
    }
Den Unterschied verstehe ich nicht zu der Methode, die du mir gezeigt hast
 

schamamutz

Mitglied
Egal, was ich mir angucke, ich komme nicht weiter:( meine Schleifen machen Knoten,immer geht's out of bounds(aber ich bekomme immer brav eine Fehlermeldung ;))


"aaaa Hallo a,b,c Peter aaaa\naaaa\nHallo\nz\ny\nx\nPeter\naaaa"
<---- mir leuchtet es auch nicht ein(also das \n schon, habs auch bei contains mal eingebaut :)), warum er auch nicht von oben nach unten sucht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Array Daten in Binär Datei schreiben/lesen Java Basics - Anfänger-Themen 11
P Daten aus Liste Lesen Java Basics - Anfänger-Themen 6
R Daten aus Datenbank lesen, verarbeiten und schreiben. Java Basics - Anfänger-Themen 1
Antoras Daten aus Date lesen Java Basics - Anfänger-Themen 3
K Daten aus einem Textfield lesen ? Java Basics - Anfänger-Themen 4
U daten aus einer datenbank aus lesen und einfügen Java Basics - Anfänger-Themen 2
B Daten aus Datei lesen und in JTable anzeigen Java Basics - Anfänger-Themen 49
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
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
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
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
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
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
S Daten aus eigenständiger .class-Datei abrufen Java Basics - Anfänger-Themen 1
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 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
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
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
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
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
S Daten aus Array in Klasse übertragen Java Basics - Anfänger-Themen 12
M Wie sicher sind Daten im Java Programm? Java Basics - Anfänger-Themen 9
R Daten via Post an php Script senden Java Basics - Anfänger-Themen 1
B Probleme bei "Daten in CSV File schreiben". Java Basics - Anfänger-Themen 9
C Datei mit Daten einlesen und höchsten wert der zweiten Spalte ermitteln Java Basics - Anfänger-Themen 1
W (XML/XSL) Daten aus Eclipse in eine Klasse Laden. Java Basics - Anfänger-Themen 1
I Daten speichern ohne Datenbank Java Basics - Anfänger-Themen 20
D Daten von einem int in einen string Java Basics - Anfänger-Themen 5
L Daten aus Array Feld löschen Java Basics - Anfänger-Themen 2
T Input/Output Daten/Objekte einfach speichern Java Basics - Anfänger-Themen 5
IngoF GUI mit Thread Daten austauschen. Java Basics - Anfänger-Themen 6
S Daten aus anderen Dateien in neue Datei einlesen Java Basics - Anfänger-Themen 3
fLooojava Daten im selben Netzwerk an IP Java Basics - Anfänger-Themen 1
M Junit Tests durchführen, die eine Verbindung zu einer Daten erfordern Java Basics - Anfänger-Themen 3
K HashMap mit Daten aus ArrayList befüllen Java Basics - Anfänger-Themen 14
P Daten auslesen und in CSV speichern Java Basics - Anfänger-Themen 6
J Daten aus zweiter Klasse importieren Java Basics - Anfänger-Themen 33
C Daten speichern und laden Java Basics - Anfänger-Themen 6
S Je nach erhaltene Daten unterschiedlich reagieren (Design Pattern?) Java Basics - Anfänger-Themen 3
J Daten von einer PHP Datei ablesen Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben