Java: finestre di dialogo per l’apertura e il salvataggio dei file

    private void salva(java.awt.event.ActionEvent evt) {                       
        JFileChooser chooser = new JFileChooser();
        FileNameExtensionFilter filter = new FileNameExtensionFilter("File di testo (*.txt)", "txt");
        chooser.setFileFilter(filter);
        int returnVal = chooser.showSaveDialog(this);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            try {
                FileWriter fw = new FileWriter(chooser.getSelectedFile());
                BufferedWriter bw = new BufferedWriter(fw);
                bw.write(txtTesto.getText());
                bw.close();
                JOptionPane.showMessageDialog(this, "Salvataggio eseguito correttamente", "Messaggio", JOptionPane.INFORMATION_MESSAGE);
            } catch (IOException ex) {
                JOptionPane.showMessageDialog(this, "Si è verificato un errore nella scrittura del file", "Errore", JOptionPane.ERROR_MESSAGE);
            }
        }
    }                      

    private void apri(java.awt.event.ActionEvent evt) {                      
        JFileChooser chooser = new JFileChooser();
        FileNameExtensionFilter filter = new FileNameExtensionFilter("File di testo (*.txt)", "txt");
        chooser.setFileFilter(filter);
        int returnVal = chooser.showOpenDialog(this);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            txtTesto.setText("");
            try {
                FileReader fr = new FileReader(chooser.getSelectedFile());
                BufferedReader br = new BufferedReader(fr);
                String riga;
                while ((riga = br.readLine()) != null) {
                    txtTesto.append(riga + "\n");
                }
                br.close();
                JOptionPane.showMessageDialog(this, "Il file è stato caricato correttamente", "Informazione", JOptionPane.INFORMATION_MESSAGE);
            } catch (IOException ex) {
                JOptionPane.showMessageDialog(this, "Il file non è stato caricato correttamente", "Errore", JOptionPane.ERROR_MESSAGE);
            }
        }
    }