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