Anzeige

Arbeiten mit externen Dateien


#1
Hallo zusammen,

ich bin noch sehr neu in Java und arbeite gerade an meinem ersten "richtigen" Projekt. Das Programm liest eine externe Datei zeilenweise ein bis es keine Zeile zum einlesen mehr gibt (soweit so gut). In jeder Zeile steht eine wichtige Information also splitte ich jede einzelne Zeile auf um an diese zu kommen. Nun muss ich diese Information aber für jede Zeile zwischenspeichern und am Ende vergleichen und bin etwas überfragt, wie man das am besten lösen kann. Ich würde mich freuen wenn mir jemand in bisschen auf die Sprünge helfen könnte.

Danke im Vorraus.
 

Bratkartoffel

gebratene Kartoffel
Premium-User
#3
Hi,

angenommen du speicherst Personen in deiner Datei, in folgender Form:
Code:
John;Smith;Green;42
Jane;Doe;Red;24
Jede Zeile deiner Datei definiert eine Person mit ihrer Lieblingsfarbe und Lieblingszahl. Diese Informationen willst du speichern und später damit arbeiten.
Eine Person ist definiert durch Nachname, Vorname, Farbe.
Um eine Person korrekt speichern zu können bietet es sich hier ein, ein DTO (Data Transfer Object) zu bauen. Dies kann zum Beispiel so aussehen (mit dem Gettern und Settern):
Java:
public class Person {
    String lastName;
    String firstName;
    String color;
    int number;
}
Wenn du nun deine Datei einliest, dann musst du die Zeile so verarbeiten (aufteilen, wie du es geschrieben hast), so dass du alle Informationen bereit hältst:

Java:
public void readFile() {
    List<Person> persons = new ArrayList<>();
    String line;
    while(line = file.readLine()) {
        String[] parts = line.split(";");
        Person pers = new Person();
        pers.setLastName(parts[0]);
        pers.setFirstName(parts[1]);
        pers.setColor(parts[2]);
        // das geht so nicht weil die Zahl eine "int" ist. Überlasse ich dir, wie du das richtig machen kannst.
        pers.setNumber(parts[3]);
        persons.add(pers);
    }
}
Am Ende dieser Methode hast du dann alle Personen der Datei in der List "persons" und kannst damit dann arbeiten.

Grüsse,
BK
 
#4
Danke für eure Hilfe!
Sagen wir mal es geht um Projekte an denen Verschiedene Leute an verschiedenen Tagen gearbeitet haben. In jeder Zeile der Datei steht also ein Name und ein Datum und der Name des Projektes. Mit dem Vergleichen wollte ich erreichen, dass Dopplungen von Name und Datum nur einmal aufgezählt werden. Das habe ich nun geschafft so dass in meiner Liste nun verschiedene Namen mit dem dazugehörigen Datum stehen. Hat eine Person an einem anderem Tag an einem Projekt gearbeitet, steht derselbe Name mit einem anderem Datum an anderer Stelle in der Liste. So weit bin ich jetzt. Der Name des Projekts ist unwichtig. Aber in der Liste sollte hinter Namen und Datum noch die Anzahl der Projekte stehen, die die Person an diesem Tag bearbeitet hat. Bis jetzt sage ich also meinem Programm wenn der selbe Name und dasselbe Datum nochmal vorkommt, füge nichts der Liste hinzu. Ich würde es gerne aber so schreiben das wenn dies der Fall ist die Anzahl der bearbeiteten Projekte in dieser Zeile der Liste um 1 hochgezählt wird. Jemand ne Idee wie ich das umsetzen kann?
 
Anzeige

Neue Beiträge

Anzeige