Questa è la classe che utilizza il metodo e che comprende il metodo per parsare le stringhe:
Come è visibile nella classe vado a parsare le righe del file txt per estrarne le informazioni utili. A questo punto, devo valutare il caso in cui il file è vuoto o parzialmente vuoto o comunque non riesco ad estrare le informazioni che mi servono.codice:public class ApriFileIrraggiamento { public Irraggiamento apriFiles(File directory) throws FileNotFoundException, IOException, DatiMeseInvalidiException { FileReader f = new FileReader(directory + File.separator + "Radiation.txt"); BufferedReader b = new BufferedReader(f); Irraggiamento irraggiamento = new Irraggiamento(); CalcolaMediaIrraggiamentoAnnuale mediaAnnuale = new CalcolaMediaIrraggiamentoAnnuale(); List<RegistrazioniIrraggiamenti> registrazioni = new ArrayList<>(); try { String latitude = parseString(b, "Lat", "Lati", true); String longitude = parseString(b, "Long", "Longi", false); b.readLine();// Potenza nominale del sistema FV String inclinazione = parseString(b, "Incli", "Inclin", false); String azimuth = parseString(b, "Orie", "Orient", false); b.readLine(); // empty b.readLine(); // Angolo fisso String[] intestazione = b.readLine().split("\\s+"); // intestazione if (intestazione.length >= 1) { int i; for (i = 0; i < intestazione.length; i++) { System.out.print(intestazione[i] + "\t"); } System.out.println(); } Coordinate coordinate = new Coordinate(latitude.trim(), longitude.trim(), inclinazione.trim(), azimuth.trim()); irraggiamento.setCoordinate(coordinate); String linea = b.readLine(); int i; for (i = 0; i < 12; i++) { if (linea != null && !linea.equals("")) { RegistrazioniIrraggiamenti registro = new RegistrazioniIrraggiamenti(linea.trim(), intestazione, intestazione.length); registrazioni.add(registro); linea = b.readLine(); } } irraggiamento.setRegistrazioniAnno(registrazioni); double mediaHm = mediaAnnuale.calcolaMediaIrraggiamentoAnno(irraggiamento); irraggiamento.setIrraggiamentoAnnualeHm(mediaHm); } finally { try { b.close(); } catch (IOException e) { } } return irraggiamento; } private String parseString(final BufferedReader reader, final String name1, final String name2, final boolean skipLast) throws DatiMeseInvalidiException { try { final String input = reader.readLine(); if (input != null && !input.trim().isEmpty() && (input.startsWith(name1) || input.startsWith(name2))) { int index = input.indexOf(":"); if (index < 0) { throw new DatiMeseInvalidiException("Identificatore non presente"); } if (skipLast) { int indexV = input.indexOf(","); return input.substring(index + 1, indexV); } else { return input.substring(index + 1); } } throw new DatiMeseInvalidiException("Identificatore non presente"); } catch (IOException ex) { Logger.getLogger(ApriFileMese.class.getName()).log(Level.SEVERE, null, ex); } return null; } }
Che consiglio mi daresti? Come dovrei procedere?
Grazie

Rispondi quotando