Erro com JFileChooser

6 respostas
T

O problema é o seguinte:
eu não consigo salvar ou abrir um arquivo (.txt) que não pertence
à pasta na qual foi instalado o meu programa.

Eu estou usando um JFileChooser (dialogo) para escolher
o arquivo, que é retornado pela instrução
dialogo.getSelectedFile().getAbsoluteFile().getAbsolutePath();”

Alguém sabe no que estou errando? Antes eu estava usando a instrução
dialogo.getSelectedFile().getName();”. Não mudou muito, mas com a
nova instrução eu pude abrir/salvar um arquivo numa pasta acima da
qual o programa está instalado.

Por exemplo, o programa está na pasta C:ProjetoInterface.
Com o getName() eu só conseguia salvar/abrir um programa
da pasta Interface.
Com o getAbsoluteFile().getAbsolutePath(), eu consigo salvar/abrir
um arquivo da pasta interface e tb da pasta Projeto, mas do diretório
raiz não.

Aguardo um retorno.

6 Respostas

mlopes

Fala.

Bom, vamos ver se eu entendi.

Se vc usar dialogo.getSelectedFile().getAbsoluteFile().getAbsolutePath(), vc vai receber uma string do tipo C:diretorioarquivo.

Eu usaria apenas dialogo.getSelectedFile().getAbsoluteFile().

Se vc quiser savar o arquivo em C: por exemplo:

File novo = new File(“c:”, oldFile.getName());

Não consigo ver problema algum, de uma olhada na api do File.

[]s

T

Pois é, eu já tinha tentado dessa maneira antes do código que eu citei
e não funcionou tb. Refiz a criação do arquivo com a string "c:’, pois não
tinha feito assim antes, mas continuou dando erro.

Obrigada pela ajuda.

“mlopes”:
Fala.

Bom, vamos ver se eu entendi.

Se vc usar dialogo.getSelectedFile().getAbsoluteFile().getAbsolutePath(), vc vai receber uma string do tipo C:diretorioarquivo.

Eu usaria apenas dialogo.getSelectedFile().getAbsoluteFile().

Se vc quiser savar o arquivo em C: por exemplo:

File novo = new File(“c:”, oldFile.getName());

Não consigo ver problema algum, de uma olhada na api do File.

[]s

smota

Ola,

O JFileChooser respeita os direitos de acesso do sistema operacional. Para visualizar a pasta pai (acima da sua pasta corrente) você tem que ter no mínimo direito de leitura … para salvar o de escrita.

No geral não se tem problemas no uso do JFileChooser.

Supondo que esse não seja seu problema … mande o erro que vocÊ recebe, no mínimo um tratamento do IOException porque ai pode ficar mais fácil.

[]s

T

Esses são os códigos que eu uso pra salvar um arquivo…

public void jmiArquivoSalvarComo_actionPerformed(ActionEvent e) {

String novoArquivo = this.escolhaArquivo(SALVAR);

if(novoArquivo != null) {

try {

nomeArquivo = novoArquivo;

File arqSaída = new File(c:,nomeArquivo);

DataOutputStream saída;

saída = new DataOutputStream(new FileOutputStream(arqSaída));			

saída.writeUTF(jtaArea1.getText());

saída.close();

} catch(Exception excecao) {

excecao.printStackTrace();

}

}

}
public String escolhaArquivo (String tipo) {

JFileChooser dialogo = new JFileChooser();

ExampleFileFilter filtro = new ExampleFileFilter();

filtro.addExtension(txt);

filtro.setDescription(Arquivos de Texto);

dialogo.setFileFilter(filtro);

if (tipo == ABRIR) {

if(dialogo.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {

return dialogo.getSelectedFile().getAbsoluteFile().getName();

}

} else {

if (tipo == SALVAR) {	

if(dialogo.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {

return dialogo.getSelectedFile().getAbsoluteFile().getName();

}

}

}

return null;

}
mlopes

Bom,

Novamente, acho que vc deve fazer o seu método retornar File e não String.

Outra coisa, se usário escolhe o arquivo no file chooser, pq vc quer gravá-lo em C:… não faz la muito sentido certo ?

Qual é o erro q vc recebe ?

[]'s

T

Eu mudei o tipo de arquivo que eu queria gravar/ler e funcionou.
Pra mim foi até melhor, porque agora estou gravando/lendo arquivos
txt puros.

Obrigada pelas idéias…

Criado 6 de março de 2003
Ultima resposta 10 de mar. de 2003
Respostas 6
Participantes 3