Originariamente inviato da mark85_159622
Io usato questo tipo di codice per il terzo punto
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.

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();
        }
    }
}