Gezieltes auslesen mit BufferedReader

Status
Nicht offen für weitere Antworten.

bernd

Bekanntes Mitglied
Code:
import java.util.*;
import java.io.*;


public class Datei4 {
    static BufferedReader in;
    static String zeile;
    static String file = "test1.txt";
  public static void main(final String[] args) {
     Vector v = new Vector();
   try {
         in = new BufferedReader(new FileReader(file));  // ließt die Datei aus
         while ((zeile = in.readLine()) != null) {
           System.out.println(zeile); // zeigt den Dateiinhalt an
         }
         in.close();
       }
       catch (Exception e) {
         System.err.println("Fehler bei Datei "+e.toString());
         System.exit(1);
       }


}
}

Mit diesem Code kann ich eine Textdatei komplett auslesen!
Wie geht man aber vor, wenn man nur bestimmte (Datensätze) auslesen will?
Gruß Bernd.
???:L
 
entweder solange mit dem BufferedReader lesen bis der gewünschte Datensatz vorhanden ist oder mit dem RandomAccessFile dingens probieren 😉
 
Füge bei <DATEI> deinen Dateinamen ein und bei <Buchstabe/Zahl> deinen Suchbegriff,
dann sollte es so funzen.

Ich hab das bei mir in eine neue Methode gepackt ...

Code:
Enumeration enum = <DATEI>.elements();
while (enum.hasMoreElements())
{
	Object obj = enum.nextElement();
	zeile = (String)obj;
	if(zeile.startsWith(<Buchstabe/Zahl>)) 
	{
		   System.out.println(obj);
	}
}
 
Charly hat gesagt.:
Füge bei <DATEI> deinen Dateinamen ein
Code:
Enumeration enum = <DATEI>.elements();
mhm - und was für ein typ soll <DATEI> sein... String / File ?? beide kennen die methode elements nicht !
 
deathbyaclown hat gesagt.:
Charly hat gesagt.:
Füge bei <DATEI> deinen Dateinamen ein
Code:
Enumeration enum = <DATEI>.elements();
mhm - und was für ein typ soll <DATEI> sein... String / File ?? beide kennen die methode elements nicht !
Da blick ich jetzt aber auch nicht so ganz durch!
:bahnhof:
 
Achso,

sorry hab nen Vekto erzeugt in den ich die Datei eingelesen habe z.B. "Test.csv" und der Name des Vektors muss bei <DATEI> eingefügt werden.
 
Lies doch einfach jede Zeile ein, wie du es ja schon machst und gehe dann zu dem Satz den du suchst. Strings kann man doch so praktisch im IndexOF etc durchsuchen.

So habe ich es jedenfalls getan.
 
Code:
import java.util.*;
import java.io.*;


public class Datei4 {
    static BufferedReader in;
    static String zeile;
    static String file = "test1.txt";
  public static void main(final String[] args) {
     Vector v = new Vector();
   try {
         in = new BufferedReader(new FileReader(file));  // ließt die Datei aus
         while ((zeile = in.readLine()) != null) {
           System.out.println(zeile); // zeigt den Dateiinhalt an
           System.out.println(zeile.indexOf("Bernd"));
           
         }
         in.close();
       }
       catch (Exception e) {
         System.err.println("Fehler bei Datei "+e.toString());
         System.exit(1);
       }


}
}
Also so! 🙂
 
bernd hat gesagt.:
Haste da ein kleines Beispiel zur Hand? 🙂
mhm - denk mal nach... heiko sagt: so wie du es machst, nur noch mit indexOf überprüfen... dann in api schaun, wie indexOf geht und selber machen :wink:
 
Gern geschehen, zur Not schau mal bei den Codebeispielen nach da hab ich sowas ähnliches schonmal reingestellt. Auch mit IndexOf etc.

Oder frag weiter bei Problemen.
 
Ist wohl doch nicht so das woran ich gedacht hatte!
Ich hatte mir das so vorgestellt:

Aufbau der Textdatei:

Peter;Mustermann;Musterweg;3
Herbert;Mueller;Koelnerstrasse;9
Karl;Lustig;Muehlenweg;12

Nun kann ich ja mit IndexOf nicht auf "Herbert;Mueller;Koelnerstrasse;9" zugreifen!
 
Ist das eine Zeile mit den drei Strings, oder wie sieht die komplette Datei aus?
Sind das immer 3 Stück pro Datensatz?
 
lies zeilenweise über BufferedReader ein.
Jede Zeile kannst du dann per
Code:
String[] teile = zeile.split(";");
teilen, dann kannst du auf den einzelnen Elemente der Zeile zugreifen...

wenn du nur überprüfen willst, ob ein Element in der Zeile ist, kannst du natürlich auch über indexOf gehen
Code:
if(zeile.indexOf("Hermann") != -1) {
....
}
 
Alles klar so gehts! 🙂
Allerdings muss man das was rauskommt wohl noch in einen String umwandeln,
das kann so ja keiner lesen!
 
Also irgendwas läuft hier nicht richtig!
Wenn ich mit:
Code:
 String[] teile = zeile.split(";");
arbeite, und mir teile ausgeben will, bekomme ich sowas wie: java.lang😡18G56U51
oder so!
???:L
 
Code:
import java.util.*;
import java.io.*;


public class auslesen {
    static BufferedReader in;
    static String zeile;
    static String file = "dat1.txt";
  public static void main(final String[] args) {

   try {
         in = new BufferedReader(new FileReader(file));  // ließt die Datei aus
         while ((zeile = in.readLine()) != null) {
              String[] teile = zeile.split(";");

//           System.out.println(zeile); // zeigt den Dateiinhalt an
//           System.out.println(zeile.indexOf("Steinstrasse"));
             System.out.println(teile[0]);
         }
         in.close();
       }
       catch (Exception e) {
         System.err.println("Fehler bei Datei "+e.toString());
         System.exit(1);
       }


}
}

Bin schon so durcheinander krieg hier nix mehr auf die Reihe! 🙂
Jetzt werden mir nur noch die Vornamen ausgegeben!
Hätte aber gerne nicht alle, sondern nur einen bestimmten! 🙂
 
Ich glaub jetzt hab ich es!
Code:
import java.util.*;
import java.io.*;


public class auslesen {
    static BufferedReader in;
    static String zeile;
    static String file = "dat1.txt";
  public static void main(final String[] args) {

   try {
         in = new BufferedReader(new FileReader(file));  // ließt die Datei aus
         while ((zeile = in.readLine()) != null) {
              String[] teile = zeile.split(";");

            if(zeile.indexOf("Peter") != -1) {
                System.out.println(teile[0]);
            }
         }
         in.close();
       }
       catch (Exception e) {
         System.err.println("Fehler bei Datei "+e.toString());
         System.exit(1);
       }


}
}

Da hab ich jetzt aber voll auf der Leitung gestanden! 😳
 
Doch doch, nun sieht es so aus!
🙂
Code:
import java.util.*;
import java.io.*;


public class auslesen {
    static BufferedReader in;
    static String zeile;
    static String file = "dat1.txt";
  public static void main(final String[] args) {

   try {
         in = new BufferedReader(new FileReader(file));  // ließt die Datei aus
         while ((zeile = in.readLine()) != null) {
              String[] teile = zeile.split(";");

            if(zeile.indexOf("Bernd") != -1) {
                System.out.println(teile[0] + " "
                 + teile[1] + " "
                 + teile[2] + " "
                 + teile[3] + " "
                 + teile[4] + " "
                 + teile[5]);
            }
         }
         in.close();
       }
       catch (Exception e) {
         System.err.println("Fehler bei Datei "+e.toString());
         System.exit(1);
       }
  }
}

Gruß Bernd.
 
Heiko hat gesagt.:
Das ist der "Speicherort" den du ausgibts
den fehler habe ich früher auch gemacht ! es ist nicht der speicherort !
es ist der klassenname und der hashcode des objekts !
 
deathbyaclown hat gesagt.:
Heiko hat gesagt.:
Das ist der "Speicherort" den du ausgibts
den fehler habe ich früher auch gemacht ! es ist nicht der speicherort !
es ist der klassenname und der hashcode des objekts !

Na da bin ich ja froh daß nicht nur mir alleine solche Fehler passieren! 🙂
Also manchmal glaub, ich es ist besser alles liegen zu lassen
und am nächsten Tag von vorne beginnen!
 
bernd hat gesagt.:
deathbyaclown hat gesagt.:
Heiko hat gesagt.:
Das ist der "Speicherort" den du ausgibts
den fehler habe ich früher auch gemacht ! es ist nicht der speicherort !
es ist der klassenname und der hashcode des objekts !

Na da bin ich ja froh daß nicht nur mir alleine solche Fehler passieren! 🙂
Also manchmal glaub, ich es ist besser alles liegen zu lassen
und am nächsten Tag von vorne beginnen!

Wem sagst du das.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben