Quote Originariamente inviata da andbin Visualizza il messaggio
Il fatto di aver creato una classe a parte (ApriFileIrraggiamento) solo per la gestione del file, ok, è buono.

Se Irraggiamento rappresenta tutto il file (e mi pare di capire che è così), allora il fatto che parseString riceva il BufferedReader, tutto sommato potrebbe anche andare bene, perché tutta la gestione è in apriFiles e quindi per forza glielo deve passare.
Ma se ci pensi, e ragioni, parseString legge solo una riga e fa il parsing di quella riga. Quindi NON è affatto necessario che parseString riceva il BufferedReader. Basta che riceva la stringa.
Il parseString viene chiamato 4 volte da apriFiles e tu per evitare 4 readLine(), per questo hai passato il BufferedReader. Ma potevi fare es.

codice:
String latitude = parseString(b.readLine(), "Lat", "Lati", true);
......

Che costava molto poco ....
In effetti hai pienamente ragione ed ho fatto così:
codice:
private String parseString(final String input, final String name1, final String name2, final boolean skipLast) {
        
        if (input != null && !input.trim().isEmpty() && (input.startsWith(name1) || input.startsWith(name2))) {
            int index = input.indexOf(":");
            if (skipLast) {
                int indexV = input.indexOf(",");
                return input.substring(index + 1, indexV);
            } else {
                return input.substring(index + 1);
            }
        }
        return null;
    }
Quote Originariamente inviata da andbin Visualizza il messaggio
Quello che va meno bene è che in parseString catturi IOException, fai un log (e questo va bene) ma poi finisce lì. No, quel IOException dovrebbe poter uscire da parseString e anche da apriFiles.
Passando non il buffereader ma la singola stringa a ParseString, mi segnalava errore sulla catch cause
codice:
exception IOException is never thrown in body of corresponding try statement
Quote Originariamente inviata da andbin Visualizza il messaggio
Ah, qui ad esempio:

String[] intestazione = b.readLine().split("\\s+"); // intestazione

non è molto buono: se readLine() restituisce null, ti becchi NullPointerException. Ma se ti dà null, vuol dire che sei a fine file e se quella riga te la aspettavi, vuol dire che il file è "malformato" e lo devi segnalare opportunamente.
Dovresti valutare questo aspetto in generale, anche per le altre readLine()
Infatti ho notato che se mi restituisce null, ho NullPointerException se non trova quella riga ma non capisco cosa vuoi dire con
Quote Originariamente inviata da andbin Visualizza il messaggio
e se quella riga te la aspettavi, vuol dire che il file è "malformato" e lo devi segnalare opportunamente.