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?
Salvar arquivo com extesão diferente
8 Respostas
Oi,
Apriore teria duas formas:
- 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);
- 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.
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.
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.
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…
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.
Por favor, ninguém? Nunca ninguém salvou algum arquivo que poderia ter extensão diferente?
Nova.Versao.Do.Jogo.tar.gz -> qual a extensão ?
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?
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.