Add extensão de arquivo na classe JFileChooser

Boa noite

Como faço pra gerar um arquivo com extensão .txt com a classe JFileChooser ?

Tentei assim:

FileFilter filter extensao = new FileNameExtensionFilter ("Arquivo txt", "txt");
chooser.addChoosableFileFilter(filter);

nao deu certo.
Só aparece all files

Aquele nome “extensao” está sobrando aí na declaração da variável. Tirando isso fica correto.

Se quiser que a opção All Files não apareça, use o método:

fileChooser.setAcceptAllFileFilterUsed(false);

Eric Yuzo

inclui:

fileChooser.setAcceptAllFileFilterUsed(false); 

e nao funcionou, como vc add extensoes em JFileChooser ?

   FileFilter filter = new FileNameExtensionFilter ("Arquivo txt", "txt");  
   chooser.addChoosableFileFilter(filter);

Copiei este trecho de uma classe que tenho aqui. Está filtrando normalmente:

// Criação do file chooser. JFileChooser fileChooser = new JFileChooser(); // Seta o título do diálogo. fileChooser.setDialogTitle("Selecione o arquivo fonte"); // Define o filtro de seleção. fileChooser.addChoosableFileFilter(new FileNameExtensionFilter( "Planilhas do excel (*.xls)", "xls")); fileChooser.setAcceptAllFileFilterUsed(false); // Impede seleções múltiplas. fileChooser.setMultiSelectionEnabled(false); // Exibe o diálogo. int op = fileChooser.showOpenDialog(this); . . .

Perae, posso ta fazendo cagada, me tira uma duvida.

adicionar extensao de arquivo no JFileChooser serve tanto pra abrir quando salvar ?

Sim.

Se não me engano a diferença de um para o outro é texto que aparece no botão.

Posta o trecho inteiro da parte que chama o file chooser.

quero q apareca a extensao txt na janela showSaveDialog.

o codigo seria esse mesmo ?

Uma parte do codigo ta assim:

[code]…
JFileChooser salvandoArquivo = new JFileChooser();
int resultado = salvandoArquivo.showSaveDialog(null);

	FileFilter extensao = new FileNameExtensionFilter("Arquivo txt", "txt");
	salvandoArquivo.setFileFilter(extensao);
	
	
	if (resultado == JFileChooser.APPROVE_OPTION) {

		File salvarArquivoEscolhido = salvandoArquivo.getSelectedFile();


[/code]

Troque:

fileChooser.showOpenDialog(this);Por:

fileChooser.showSaveDialog(this);

O this representa a janela que está chamando o file chooser, caso esteja chamando-o de uma classe que estende JFrame, por exemplo.

[quote=renatorudolf]
Uma parte do codigo ta assim:

[code]…
JFileChooser salvandoArquivo = new JFileChooser();
int resultado = salvandoArquivo.showSaveDialog(null);

	FileFilter extensao = new FileNameExtensionFilter("Arquivo txt", "txt");
	salvandoArquivo.setFileFilter(extensao);
	
	
	if (resultado == JFileChooser.APPROVE_OPTION) {

		File salvarArquivoEscolhido = salvandoArquivo.getSelectedFile();


[/code][/quote]
Aplique o filtro antes de chamar o método showSaveDialog.

Aeeeee Funcionou. :smiley:

Mas é o seguinte, a classe JFileChooser num me permite salvar com extensao txt tb ? (alem de me mostras somente arquivos com extensao txt)

Não entendi muito bem. Quer dizer, criar um arquivo que não exista já com a extensão txt?

O JFileChooser permite que se selecione arquivos. Ele não cria nem escreve neles, o que ele faz é retornar um objeto que representa um arquivo, que pode existir ou não. O tratamento dos arquivos é uma etapa a parte.

Quanto ao FileFilter, ele só filtra os arquivos que aparecem na tela. Ele não trata o que é digitado pelo usuário.

Entendi, :wink:

mas gostaria que o arquivo fosse salvo em .txt automaticamente, sem que o usuario tenha q escrever nomeDoArquivo.txt.

já fez isso alguma vez ?

Uma forma seria concatenar o “.txt” ao nome que for digitado pelo usuário na hora de criar o arquivo.

Desculpa ser chato, mas como faz isso ? :lol:

String nomeDoArquivo = fileChooser.getSelectedFile().getPath() + ".txt";

O método getPath retorna o caminho do arquivo (o que deve estar sem extensão), em seguida concatena com a extensão. Depois basta criar um objeto File com este caminho.

Valew Eric Yuzo, deu certo.

abraço

Então seria algo como isso.

[code] File file = escolha_arquivo.getSelectedFile();

    //Criamos um PrintWriter, para escrever no arquivo.
    PrintWriter pw = null;


        String texto = areatexto.getText();
    try {
        //Escrevemos no arquivo.
        pw = new PrintWriter(file+".txt");
        pw.println(texto);
[/code]

Ou seja concatenando o arquivo que eu vou salvar com a extenção .TXT assim:

            pw = new PrintWriter(file+".txt");