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!
java jfilechooser showsavedialog showopendialog
Commentami!