Mit Java eine bestimmte Zeile einer .txt Datei auslesen

ascawath

Mitglied
Hallo,

ich wollte versuchen, mit Java eine .txt Datei auszulesen, dann aber nur eine bestimmte Zeile, also nicht Zeile für Zeile.
Das Programm, um eine Datei auszulesen habe ich, ich verzweifele jetzt endlich nur daran eine Zeile auszulesen, in der jetzt z.B. die Zahl "1" vorkommt oder ähnliches. Denn ich habe quasi anstatt einer Datenbank die Werte in eine Datei geschrieben: Id, Name und Beruf.

Wie ist es möglich, nur die Zeile auszulesen, in der nur eine spezifische Nummer bzw. ein bestimmter Name vorkommt?

Danke für eure Hilfe schon einmal im Voraus.
 
Hi

so, wie du dir das vllt. vorstellst, ist das nicht möglich.
Du musst vom Anfang weg Zeile für Zeile auslesen
und immer prüfen, ob das die richtige Zeile ist
(oder die ganze Datei auf einmal einlesen).

(Das ist nicht nur bei Java so, sondern generell bei jeder Programmiersprache.)

Und bevor du mehrmals die komplette Datei durchsuchst,
besser einmal in ein Array etc. einlesen.

Eine Verschnellerung wäre nur möglich, wenn jede Zeile gleich viel Byte hat.
Da Namen/Berufsbezeichnungen etc. aber verschieden lang sind...
 
Danke für eure schnelle Antworten.
Ihr meint also, ich soll die .txt Date in ein Array einspeichern, und dann soll
man mit dem Befehl contains(String) suchen. So weit so gut. Wenn er jetzt true
zurückliefert, weiß ich ja nur, dass diese beinhaltet ist, wie bekomme ich dann den Standort,
bzw. wie bekomme ich dann alle Angaben der Zeile ?
 
Danke für deine Antwort...
mit indexOf, entschuldige, dass ich so doof frage, wenn ich damit dann alle Ergebnisse bekomme, also überall da, wo es steht, kann es da dann zu einer Verwechselung z.B. mit "1" und "12" geben, weil ja beide male "1" drin vorkommt?

LG Lucas
 
Ah, sorry. Hab gedacht, du willst was Anderes.

Also, mit indexOf und substring könnte man
die einzelnen (;-getrennten) Teile ermitteln.
Wenn man alle Teile braucht ist split schneller.

Aber, je nach Programm, wäre es vllt. am sinnvollsten,
die Zeilen schon beim Einlesen zu trennen.

Eine Zeile einlesen, mit split an den ; auftrennen, und in ca. sowas
Java:
class dateieintrag {
    int id;
    String name;
    ...
}
reinspeichern.
Aus dem dann das Array machen.

Dann geht die Sucherei nach id usw. auch am schnellsten/einfachsten.
 
Danke für deine Antwort.
Ich glaube für mein Programm ist es sinnvoll, die in dem Array zu lassen und erst dann, wenn man
sie braucht, trennt....
Ich finde aber irgendwie nicht den richtigen Befehl, um die .txt Datei in ein Array zu speichern..
Java:
public class array {
	 BufferedReader reader;

	int[] array;
	public void main(String[] args){

try{

	reader = new BufferedReader(new FileReader("123.txt"));
         String zeile = reader.readLine();
         while (zeile != null) {
                               String[] values = zeile.split(";");
        
                               for (int i = 0; i < values.length; i++) {
							array[i] = Integer.parseInt(values[i]);
                               }
        }
, den Code den ich habe,
Da steht Integer, obwohl das ein String ist... nur ich weiß nicht, wie ich das sonst machen soll..
 
Das geht ja schon in die Richtung.

Und jetzt noch eine Klasse, weil ja nicht alles aus int besteht:
Java:
class Person {
    public int id;
    public String name;
    public String beruf;
}
Sowas in der Art.
Das Array wird ein Person[]
Und das Einlesen, ca. sowas:
Java:
while ((zeile = reader.readLine()) != null) {
    String[] values = zeile.split(";");
    array[i].id = Integer.parseInt(values[0]);
    array[i].name = values[1];
    array[i].beruf = values[2];
}
 
Danke für deine Antwort.

Muss ich dann aus dem array Person[] nicht ein 2D array machen, weil ich mich dann ja sowohl in den verschiedenen Personen und in deren Eigenschaften bewegen kann.

Eine Frage habe ich dann noch: Muss dann der Code von mir da auch noch rein, oder ist das dann DoppeltGemoppelt?

LG Lucas
 
Zuletzt bearbeitet:
Zurück