BufferedReader begrenzen

MateMalte

Mitglied
Hi Ihr,
Ich habe eine .txt Datei mit Namen angelegt. Aus dieser Datei habe ich mit einem BufferedReader einen List gemacht:
Java:
//Namensliste erstellen
        File VorNamenFrauen = new File("D:\\Programme\\Eclipse\\Workplace\\InstLife - June\\Listen\\VorNamenFrauen.txt");
        try(BufferedReader reader = new BufferedReader(new FileReader(VorNamenFrauen))) {
            VorNamensListeFrauen = reader.lines().skip(1).collect(Collectors.toList());
        } catch (IOException ex) {
            throw new UncheckedIOException(ex);
        }
Jetzt würde ich gerne mehr Namen hinzufügen, diese aber in einer andern Liste speichern. Ich weiß ich kann Zeilen überspringen, aber kann ich ihn auch nur bis zu einer bestimmten Stelle die Zeilen lesen lassen?
Und wenn nicht, habt Ihr vielleicht Vorschläge wie ich an das eben genannte Ziel gelange?
Vielen Danke
 
Ungetestet:
Java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class Vornamen {
	static List<String> getVornamen(String f) throws FileNotFoundException, IOException {
		try (BufferedReader r = new BufferedReader(new FileReader(new File(f)))) {
			return r.lines().skip(1).collect(Collectors.toList());
		}
	}

	static List<String> addVornamen(List<String> l, String name) {
		List<String> l2 = new ArrayList<String>(l);
		l2.add(name);
		return l2;
	}

	public static void main(String[] args) throws FileNotFoundException, IOException {
		List<String> vornamen = getVornamen("foo.txt");
		List<String> vornamen2 = addVornamen(vornamen, "bar");
		System.out.println(vornamen.size());
		System.out.println(vornamen2.size());
	}
}
 
Ich verstehe jetzt nicht genau, was du machen willst.

aber kann ich ihn auch nur bis zu einer bestimmten Stelle die Zeilen lesen lassen?

Falls du nur eine bestimmte Menge an Namen lesen willst, dann kannst du .limit(n) nutzen.

Generell kannst du aber auch jederzeit auf eine Stream Lösung verzichten und es einfach selbst schreiben. Dann kannst du beim lesen ganz frei agieren, wie du es gerne möchtest.
 
Ich verstehe jetzt nicht genau, was du machen willst.



Falls du nur eine bestimmte Menge an Namen lesen willst, dann kannst du .limit(n) nutzen.

Generell kannst du aber auch jederzeit auf eine Stream Lösung verzichten und es einfach selbst schreiben. Dann kannst du beim lesen ganz frei agieren, wie du es gerne möchtest.
Es soll ein Spiel werden, indem am Anfang ein zufälliger Charakter erstellt wird, dessen Name von Nationalität und abhängig ist. Und damit ich nicht für jedes Land je zwei .txt Dateien erstellen muss (männlich, weiblich), würde ich gerne die weiblichen und männlichen Namen gerne zusammenfassen. Da wäre .limit() eine gut Lösung. Ich muss es nur noch ausprobieren. Danke!
 

Zurück
Oben