Salvar um arquivo com uma determinada extensão

Este tópico eu criei para mostrar como resolvi um problema que tive já há algum tempo, que era como salvar um arquivo e escolher sua extensão. O código está bem explicado e o objetivo é ajudar àqueles que têm alguma dificuldade em manipulação de arquivos, principalmente quando às extensões.

import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;

public class Exportar {

    private static final Charset iso_8859_1 = StandardCharsets.ISO_8859_1;//Codificação de caracteres do arquivo (alfabeto latino)
    private static Path caminho = null;
    private static String filePath;
	
    public static void main(String[] args) {
		
	String texto = "Meu textoçãoñ";
		
	//Cria a janela para salvar arquivo 
	JFileChooser salvarArquivo = new JFileChooser();
	salvarArquivo.setAcceptAllFileFilterUsed(false);//Não aparecer arquivos do tipo Todos os Arquivos
		
	//Filtros de arquivos
	FileNameExtensionFilter filtro1 = new FileNameExtensionFilter("Arquivo de texto", "txt");
	FileNameExtensionFilter filtro2 = new FileNameExtensionFilter("Documento word", "doc");
		
	//Adicionar filtros
	salvarArquivo.addChoosableFileFilter(filtro1);
	salvarArquivo.addChoosableFileFilter(filtro2);
		
	//Mostrar janela Salvar Arquivo
	salvarArquivo.showSaveDialog(null);
		
	// Selecionar extensão do arquivo
	if (salvarArquivo.getFileFilter() == filtro1) {
	    filePath = salvarArquivo.getSelectedFile().getPath().concat(".txt");
	} else if (salvarArquivo.getFileFilter() == filtro2) {
	    filePath = salvarArquivo.getSelectedFile().getPath().concat(".doc");
	}
	try {
	    //Criar arquivo
	    File arquivo = new File(filePath);
	    //Pegar o endereço do arquivo
	    caminho = Paths.get(arquivo.getAbsolutePath());
	} catch(NullPointerException e1){e1.printStackTrace();}
	//Escrever o texto no arquivo
        try(BufferedWriter escrita = Files.newBufferedWriter(caminho, iso_8859_1)) {
             escrita.write(texto);
             JOptionPane.showMessageDialog(null, "Arquivo salvo!");
        } catch (IOException | NullPointerException e2) {e2.printStackTrace();}

	}

}
1 curtida