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();
}