Salvar arquivo com extesão diferente

8 respostas
D

Olá pessoal, estou com um problema para salvar um arquivo.
A questão é a seguinte:
Tenho uma linha que pega um objeto do tipo BuferedImage e salva com a extensão desejada, a linha de código simplificada é assim:
ImageIO.write(oBjetoImagem, “.jpg”, oBjetoArquivo); Vejam é que, aqui eu posso colocar qual a extensão do arquivo que quero criar.
Ae é que está o maior problema, pois eu criei um JFileChooser com os filtros corretos, mas quando eu no momento de salvar o arquivo com o JFileChooser, eu teria que ter uma maneira de saber qua a extensão que o usuário selecionou e também qual o path completo que ele selecionou, para poder salvar o arquivo. o path é fácil fácil de se pegar, mas…
O que acontece é que eu não sei como pegar qual extensão o usuário selecionou naquele combo, e dae não tem como eu saber em qual extensão salvar o arquivo, alguém ae teria uma luz para esse problema?

8 Respostas

rafaelglauber

Oi,

Apriore teria duas formas:

  1. Uma forma bem rústica de se saber a extenção

int dotPos = filenameExtension.lastIndexOf("."); //aqui a variável filenameExtension foi alimentada pelo retorno de sua caixa de dialogo. String extension = filenameExtension.substring(dotPos);

  1. Usando Myme

File f = new File(filenameExtension); String extension = new MimetypesFileTypeMap().getContentType(f)); // valor de extension seria "image/gif"

Espero que ajude a clarear as idéias.

D

rafaelglauber obrigado pela ajuda, mas essas suas dicas funcionariam se fosse uma caixa para abrir o arquivo, e não para salvar.
Pois o que preciso é para salvar, pois por exemplo, o usuário vai lá seleciona o diretório e escreve o nome do arquivo, mas não digita a extensão, a extensão
deveria ser a que foi selecionada no combo abaixo de onde coloca o nome do arquivo.
Mas como eu preciso criar um arquivo, ou seja ele não existe no computador, eu preciso pegar o path completo dele + a extensão que foi selecionada no combo
Ae é que está o problema, o path completo eu consigo pegar fácil, mas a extensão que foi selecionada, não estou conseguindo.
Alguma dica?

Obrigado pela atenção.

rafaelglauber

Oi,

Aqui tem um exemplo justamente com filtro de imagens, terá que criar um filtro especial e uma classe auxiliar para obter qual foi a opção selecionada.

D

Gente, acho que ainda não me entenderam…
Eu não quero selecionar a extensão para filtrar os tipos de arquivos que aparecem na caixa.
Mas sim eu quero selecionar a extensão que vou salvar meu arquivo. Dae é que vem a necessidade de saber o que foi selecionado.

rafaelglauber no exemplo tem até um exemplo de salvar, mas não existe o bendito método para pegar a extensão selecionada (alias é extensão ou estensão?) Porque a classe FileFilter não tem um método getExtension assim como tem o getDescription avew… :frowning: To desanimando com isso, é impossível que ninguém nunca fez isso em java! Exemplo para abrir arquivo se acha aos punhados, mas para salvar na extensão desejada com o JFileChooser tá fraco os exemplos.
Para ser mais claro vou mostrar uma imagem:


Se alguém tiver mais alguma dica, fico grato.

Obrigado pela paciência.

D

Por favor, ninguém? Nunca ninguém salvou algum arquivo que poderia ter extensão diferente?

peczenyj

Nova.Versao.Do.Jogo.tar.gz -> qual a extensão ?

D

Nova.Versao.Do.Jogo.tar.gz -> qual a extensão eu quero salvar?

Entendeu? O arquivo NÃO existe, por isso não sei qual a extensão dele, mas eu preciso saber qual a extensão que ele quer que seja salvo.
Por exemplo, abra o paint e depois vai em Arquivo -> Salvar como… agora você pode colocar um nome de arquivo, e em baixo selecionar a extensão que quer salvar, então se eu selecionar .jpg eu tenho que saber que foi selecionado .jpg para poder salvar a imagem em .jpg entenderam?

rafaelglauber

Oi,

Após você executar seu DIALOG de salvar obtenha:

fileChooser.getFileFilter().getDescription()

ou mesmo crie um FileFilter personalizado com um método extra mais ou menos assim:

getFileType()

que retornaria uma constante String determinada por você.

Essa segunda opção acho mais indicada em vez de usar a opção acima (que é um pouco ruim, já que retorna a descrição do tipo selecionado). Com essa segunda você testaria o tipo com:

fileChooser.getFileFilter().getFileType

E tudo isso você consegue antes mesmo de salvar o arquivo (após a execução do DIALOG), agora se ainda quer acessar o texto selecionado no ComboBox isso realmente eu não sei.

Criado 18 de outubro de 2008
Ultima resposta 22 de out. de 2008
Respostas 8
Participantes 3