Dal punto di vista della iterazione e accesso a chiave/valore, ok è corretto. Dal punto di vista della gestione del file e delle eccezioni ... no, purtroppo.Originariamente inviato da mark85_159622
Io usato questo tipo di codice per il terzo punto
Per caso hai principalmente esperienze in altri linguaggi "procedurali" (es. C, Pascal, altri ...)?? In questi altri linguaggi (dove non ci sono le "eccezioni") è praticamente la prassi comune fare funzioni che ritornano uno "status" o dei "codici di errore", per esempio 0 = successo, 1 = errore X, 2 = errore Y o altre cose simili.
Bene, in Java no. In Java ci sono le eccezioni e dovrebbero essere sfruttate al meglio.
Il tuo metodo dovrebbe avere tipo di ritorno void e dichiarare che può lanciare IOException. E inoltre non hai chiuso lo stream, cosa che è da fare in qualunque caso, anche se una eccezione esce dal metodo. E la eccezione va gestita altrove più "al di sopra".
Ti posto la versione corretta, scritta seguendo le convenzioni "standard" per la scrittura di codice Java:
codice:private void writeFile(String filename) throws IOException { Iterator it = lineOfFile.entrySet().iterator(); FileOutputStream fos = null; PrintStream ps = null; try { fos = new FileOutputStream(filename); ps = new PrintStream(fos); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); ps.println(entry.getKey() + " " + entry.getValue()); } } finally { if (ps != null) { ps.close(); } else if (fos != null) { fos.close(); } } }

Rispondi quotando