Jak wczytać dane z pliku używając Scanner?

0

Hej,

Robie sobie jakies stare zadanka aby odswiezyc troche podstawy, i natknalem sie na problem z wczytaniem pliku. Jeden plik jest wczytywany poprawnie i wszystko jest ok, natomiast 2 plik tekstowy nie jest wczytywany i scanner przechodzi Od razu do ostatniej linijki kodu.

momsList jest wczytywany poprawnie, tutaj jest przykladowy wiersz danych:

1 Agata 25

Tutaj jest sciezka do pliku ktory jest wczytywany bez problemu: src/text-files/mamy.txt

childFile nie jest wgl wczytywan, tutaj jest przykladowy wiersz danych:

1 c Agnieszka 1999-11-20 2450 48 33

Tutaj jest sciezka do pliku ktory probuje wczytac: src/text-files/dzieci.txt

Jak robie Debug, przechodze na linijke: String[] data = childReader.nextLine().split(" "); po czym przechodzi na ostatnia klamre kodu i nic nie jest wczytywane z pliku.

Moglby ktos doradzic dlaczego kod jest praktycznie identyczny a jeden scanner wgl nie wczytuje wartosci z pliku?

List<Mom> momsList = new ArrayList<>();

try {
    File moms = new File("src/text-files/mamy.txt");
    Scanner momScanner = new Scanner(moms);

    while (momScanner.hasNextLine()) {
        String[] data = momScanner.nextLine().split(" ");

        momsList.add(new Mom(Integer.parseInt(data[0]), data[1], Integer.parseInt(data[2])));
    }
    momScanner.close();
} catch (FileNotFoundException e) {
    System.out.printf("Moms file not found");
    e.printStackTrace();
}

List<Child> childList = new ArrayList<>();

try {
    File childFile = new File("src/dzieci.txt");
    Scanner childReader = new Scanner(childFile);

    while (childReader.hasNextLine()) {
        String[] data = childReader.nextLine().split(" ");


        Mom mama = momsList.stream()
                .filter(m -> m.getId() == Integer.parseInt(data[6]))
                .findAny()
                .orElse(null);


        Child dziecko = new Child(Integer.parseInt(data[0]), data[1],
                data[2], new SimpleDateFormat("yyyy-MM-dd").parse(data[3]),
                Integer.parseInt(data[4]),
                Integer.parseInt(data[5]), mama);

        childList.add(dziecko);
        if (mama != null) {
            mama.addChild(dziecko);
        }
    }

    childReader.close();
} catch (FileNotFoundException e) {
    System.out.println("Error");
    e.printStackTrace();
} catch (ParseException e) {
    e.printStackTrace();
}
0

src/text-files/dzieci.txt czy "src/dzieci.txt" ?

Bo w kodzie masz "src/dzieci.txt"

BTW dlaczego klasy nazywasz po angielsku, a zmienne po polsku?

0
s rc/text-files/dzieci.txt

Jest to spowodowane tym ze miałem podobny projekt napisany i później właśnie próbowałem użyć tego starego kodu żeby spr czy mam gdzieś błąd.

Jako ze kod jest Ala „brudnopis” jest w 2 językach gdyż poszukiwałem źródła błędu

1

Brudnopis nie brudnopis dobre nawyki trzeba utrwalać od początku...

0

no supcio, a jakieś sygnatury metod są, czy to tak ma fruwać sobie? jakieś final czy coś? może rozdziel to na 2 metody, wystaw przed metodami w klasie moms i childList, dodaj do tej metody co ma obrabiać childList jakieś parametry związane z moms

albo, jak chcesz na skróty, to podaj te pliki co ma zaczytać, ogarnę i wrzucę gotowy kodzik ;) i tak mi się nudzi

EDIT:
albo - podejrzewam, plik jest pusty, albo są tam imiona, ale oddzielone przecinkami/kropkami/czymkolwiek

1 użytkowników online, w tym zalogowanych: 0, gości: 1