Innanzitutto, anche se CaricatoreGiocatori è stata intesa (come presumo) dal testo come la classe che contiene tutta la gestione, a partire dal main(), in realtà non dovresti fare TUTTO nel main(). Non dovresti avere un main lungo un kilometro ....
Come minimo (e ripeto, minimo), dovresti fare metodi separati per le varie gestioni. Ancora meglio sarebbe fare più classi per le varie logiche, ad esempio una classe SOLO per leggere campionato.dat, una classe SOLO per leggere la tipologia di file delle squadre, ecc...
Ammesso e sperando che questo sia consigliato/accettato dall'esercizio e non proibito per qualche motivo ....
Non c'è da "capire" nulla di particolare. Leggi una riga e per te quella riga è un pathname (relativo o assoluto ... dipende, ma credo che basti "relativo" alla directory corrente) che poi passerai ad un'altra classe di I/O per leggere quel file specifico.
Ma prima di tutto questo riguardo l'input, dovresti ragionare sulle entità coinvolte, sulle classi che andranno a "modellare" i dati e sulle relazioni tra queste. L'hai fatto??
Questo viene prima della gestione dei file.![]()