Java: salvare con JfileChooser

Mattepuffo's logo
Java: salvare con JfileChooser

Java: salvare con JfileChooser

Articolo aggiornato.

Esistono vari modi per creare un jFileChooser.

Io l'ho inserito direttamente dentro al JFrame e parte quando viene richiamato l'evento da tastiera Ctrl+S o quando si clicca sul menu File->Salva.

Vediamo il codice:

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
        JFileChooser fc = new JFileChooser();
        FileFilter csvFilter = new FileNameExtensionFilter("File CSV", "csv");
        FileFilter txtFilter = new FileNameExtensionFilter("File TXT", "txt");
        fc.addChoosableFileFilter(csvFilter);
        fc.addChoosableFileFilter(txtFilter);
        int returnVal = fc.showSaveDialog(this);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            File f = fc.getSelectedFile();
            FileFilter selectedFilter = fc.getFileFilter();
            if (f.getName().indexOf('.') == -1) {
                if (selectedFilter == csvFilter) {
                    f = new File(f.getPath() + ".csv");
                } else if (selectedFilter == txtFilter) {
                    f = new File(f.getPath() + ".txt");
                }
            }
            try {
                FileWriter file = new FileWriter(f, true);
                PrintWriter out = new PrintWriter(file);
                out.println(jTextArea1.getText());
                out.close();
            } catch (IOException e) {
                JOptionPane.showMessageDialog(this, e, "ERRORE", JOptionPane.ERROR_MESSAGE);
            }
        }
    }

Come vedete il codice è all'interno di un evento.

Ho preferito metterlo qua ma probabilmente dal punto di vista del "design" del codice sarebbe meglio mettere il codice altrove e poi richiamarlo.

Comunque, alla seconda riga creo un oggetto JFileChooser, che corrisponde alla classica finestra per navigare tra le cartella.

Nelle quattro roghe sotto aggiungo due filtri; uno per i file .txt e uno per i .csv.

Poi invochiamo il metodo showSaveDialog.

JFileChooser ha due metodi principali: showOpenDialog che serve per aprire il file, e showSaveDialog che serve per slavarli.

APPROVE_OPTION mi restituisce un valore se l'operazione è stata approvata.

getFileFilter richiama il filtro selezionato (txt o csv).

A seconda di quello che abbiamo richiamato entriamo in uno dei due if, che svolgono lo stesso compito ma con filtri diversi.

La riga

f.getName().indexOf('.') == -

serve per verificare se in fase di salvataggio è stato aggiunta l'esensione a mano.

In questo caso il file viene salvato così com'è; sennò viene aggiunta l'estensione scelta.

Nel mio caso il contenuto lo prendo dalla JTextArea.

Enjoy!


Condividi

Commentami!