Wczytywanie danych z pliku txt do tabeli lub arrayList

0

Mam dane w pliku txt oddzielonymi przecinkami. Np.

2017,5,6,11:00,TAK,Lodz,5.0,06:15:10
2018,2,6,11:12,TAK,Poznan,10.0,02:15:10
2019,5,6,15:00,TAK,Warszawa,21.0,02:15:10
2017,11,12,11:00,TAK,Leszno,5.0,02:15:10

Chcę pobrać,wczytać dane z pliku txt do tabeli tableView. Przedtem chciałbym te dane trzymać w osobnych zmiennych np. tabeli czy arrayList. Zrobiłem tak.

    File file = new File("plik.txt");
    Scanner odczyt = new Scanner(file);
    String linia = odczyt.nextLine();
    String tabela[] = linia.split(",");

    yearZ = Integer.parseInt(tabela[0]);
    monthZ = Integer.parseInt(tabela[1]);
    dayZ = Integer.parseInt(tabela[2]);
    zapis = tabela[4];
    miejsceZawodow = tabela[5];

W tableview wyświetla mi się tylko pierwszy wiersz. Wiem doskonale że MUSZĘ użyć pętli np.

     while(odczyt.hasNext()){
                System.out.println(odczyt.nextLine());
           }

Ale nie wiem jak to zrobić w tym przypadku.

0

Stwórz klasę, posiadającą dane odpowiadające temu co chcesz wczytać z pliku (np. data, miejsce zawodów) i w pętli wczytuj dane do tablicy/ArrayListy tych obiektów.

0

Tak zrobiłem. Mam klase i wiem co do czego chcę wczytać tylko jak użyć pętli żeby wczytywać dane wiersz po wierszu? Jaki zapis logiczny?

0

Użyć metody list z java.nio.file.Files która zwraca Stream. Kazdą linie mapujesz do obiektu a później robisz collect :)

0
mprofitw napisał(a):

Tak zrobiłem. Mam klase i wiem co do czego chcę wczytać tylko jak użyć pętli żeby wczytywać dane wiersz po wierszu? Jaki zapis logiczny?

Możesz pokazać jak wygląda ten Twój kod z użyciem tej klasy?

Bo mając np. taką strukturę danych

public class Travel {
    private String date;
    private String from;
    private String to;

    public Travel(String date, String from, String to){
        this.date = date;
        this.from = from;
        this.to = to;
    }

    @Override
    public String toString() {
        return "Bus from " + from + " to " + to + " leaves at " + date;
    }
}

i taki pliczek tekstowy

10:10,Pyrzowice,Amsterdam
13:15,Gdansk,Praga

możesz zrobić coś takiego

public class Main {
    public static void main(String... args) throws IOException {
        List<Travel> travels = new ArrayList<>();
        try (Stream<String> stream = Files.lines(Paths.get("file.txt"))) {
            stream.forEach(line -> travels.add(new Travel(
                    line.split(",")[0],
                    line.split(",")[1],
                    line.split(",")[2])));
        }

        travels.forEach(System.out::println);
    }
}
0

Bradzo dziękuję za odpowiedź. Próbuję wykorzystać te wskazówki i przykładowy kod. Problem że gdy próbuję wyświetlić wyniki w tableView

tableViewZawody.getItems().addAll( travels);
Cannot resolve method addAll(java.util.List<mws.Travel>)

I co w przypadku gdy niektóre dane są innego typu niż String?

0

Poradziłem sobie z tym. A jak to teraz zapisać z powrotem do pliku?

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