Não está nesse null que vc passa na segunda linha?
intretorno=dialogoArquivo.showSaveDialog(null);
Apenas para teste coloque o valor 0 nessa variavel retorno e verifica se o erro persiste.
EDIT: Esquece… dei uma olhada na API do JFileChooser e pode ser null ali sim…
Eu rodei o seu código aqui e funcionou certinho… deve ser alguma configuração do seu projeto.
Coloquei o seu código e só adicionei a declaração JFileChooser dialogoArquivo = new JFileChooser(); para funcionar a variavel dialogoArquivo
guisantogui
Persiste, mas agora trocou de lugar ele estoura nullPointer na linha 5:
Filearquivo=dialogoArquivo.getSelectedFile();
Poneis123
guisantogui:
Persiste, mas agora trocou de lugar ele estoura nullPointer na linha 5:
File arquivo = dialogoArquivo.getSelectedFile();
Então é o que o wellington disse, sua variavel dialogoArquivo está nula.
faça a seguinte declaração para que funcione certinho:
JFileChooserdialogoArquivo=newJFileChooser();
Poneis123
É pra ele declarar JFileChooser dialogoArquivo = new JFileChooser(); onde no seu código possivelmente está JFileChooser dialogoArquivo = null;
Ou então localize em que momento é passado o null para a variavel.
Não é para declarar dentro do método, se vc declarar dentro do método vai dar um erro de compilação.
gente consegui salvar assim, mas pq meu arquivo estava em branco qdo abri?
Poneis123
Ta em branco pq é o que tá no seu código, vc pede pra ele criar um arquivo com base no nome que o usuário digita e salva esse arquivo…
int retorno = dialogoArquivo.showSaveDialog(null);
if(retorno == JFileChooser.APPROVE_OPTION)
{
File arquivo = new File(""); //Aqui vc cria a instancia de arquivo
arquivo = dialogoArquivo.getSelectedFile(); //aqui vc passa o caminho que o usuario selecionou com o nome do arquivo que o usuario digitou
try {
FileOutputStream salvar = new FileOutputStream(arquivo); //Aqui vc salva o arquivo que o usuario digitou(arquivo novo) sem qualquer alteração
System.out.println("uhulll");
}
catch (FileNotFoundException ex) {
ex.printStackTrace();
}
}
O q vc ta querendo fazer? o que vc queria q tivesse dentro do arquivo?
guisantogui
Como assim arquivo sendo fechado, criado ele esta sendo pq apareceu lah no desktop que eu direcionei, mas tava em branco.
Queria salvar um arquivo com os dados de uma lista ao inves de um txt, mas primeiro acho q devo saber como escrever algo no txt, depois esse “fechar” que não conheço!
Sabem o q devo fazer, vou ficar testando ake!
brigado pela força!
Poneis123
Então, qdo passa pelo código arquivo = dialogoArquivo.getSelectedFile(); ele guarda o caminho e o nome do arquivo, mais nada… é um arquivo vazio…
vc precisa gravar dentro dele o que deseja e dps utilizar o código FileOutputStream salvar = new FileOutputStream(arquivo);
Vou dar uma olhada, mas eu faria igual se quisesse salvar uma lista, ou seja arquivo binario e naum de txt?
ViniGodoy
Quando for postar uma exception, lembre-se de destacar para nós a linha que a exception indica. Por exemplo, naquele método ali, qual é a linha 94? Lembre-se que não temos um editor de textos e seu código aqui.
Outra coisa, aprenda a usar um depurador. Ele é a forma mais fácil de achar esse tipo de problema, em uns 90% dos casos. Os outros 10% são os casos em que vc bate o olho e pensa “putz, que cagad…”, e já corrige na hora.
Como a linha do NullPointer está diferente do bloco code, diria que:
dialogoArquivo está nulo.
Não é o null passado no método showSaveDialog pois se fosse isso, teria, ao menos, uma linha a mais no StackTrace.
WellingtonRamos
Então é certeza, dialogoArquivo está nulo.
um teste que pode fazer é (na primeira linha do método):
if(dialogoArquivo==null)thrownewException("Está mesmo nulo!");
Se tiver a exceção com a mensagem, já era. Por algum motivo, neste momento você ainda não tem dialogArquivo instanciado.
PS: Pode trocar por um mero System.err.println(“Está mesmo nulo!”);
WellingtonRamos
[quote=Poneis123]
guisantogui:
Persiste, mas agora trocou de lugar ele estoura nullPointer na linha 5:
File arquivo = dialogoArquivo.getSelectedFile();
Então é o que o wellington disse, sua variavel dialogoArquivo está nula.
faça a seguinte declaração para que funcione certinho:
Eis a questão, muitas vezes, fazer isso pode não resolver. Esse é, ou um atributo de classe, ou um atributo estático. Em quaisquer desses casos, pode ser que instanciar o objeto dentro do método não resolva ou crie uma situação instável.
O ideal é instanciar no construtor (caso seja atributo de classe) ou num bloco estático (caso seja um atributo estático).
gente consegui salvar assim, mas pq meu arquivo estava em branco qdo abri?
:(
Ou o arquivo não existia (e acabou de ser criado), ou o arquivo estava vazio. No código que você colou aqui, não há nenhum dado sendo gravado no arquivo.
Aliás, o arquivo também não está sendo fechado.
WellingtonRamos
guisantogui:
Como assim arquivo sendo fechado, criado ele esta sendo pq apareceu lah no desktop que eu direcionei, mas tava em branco.
Queria salvar um arquivo com os dados de uma lista ao inves de um txt, mas primeiro acho q devo saber como escrever algo no txt, depois esse “fechar” que não conheço!
Sabem o q devo fazer, vou ficar testando ake!
brigado pela força!
Hmm.
O salvar deve ter um método write (se não me engano). Observe o parâmetro do mesmo.
Ao terminar, preferencialmente num bloco finally (pois você colocou um bloco try-catch) use salvar.close()
Obs.: A declaração da variável salvar será feita fora do bloco try (mas pode deixar igual a null).
Faça uma pesquisa, como o Poneis123 disse, no GUJ q tem bastante assunto.
adicione FileWriter escritor = null; fora do try,
troque FileWriter escritor = new… por escritor = new…
adicione também escritor.close() no bloco try dentro do bloco finally.
É melhor se acalmar, pegar exemplos que funcionam e tutoriais antes de prosseguir. Senão, vc começa a bater cabeça e vai acabar sem sair do lugar…
WellingtonRamos
Talvez e acho bem provavel, que seja o descritor de arquivos (File) ligado a um OutputStream e a um Writer.
Segue um teste rápido para gravar dados em arquivo.
importjava.io.File;importjava.io.FileOutputStream;importjava.io.FileWriter;importjava.io.IOException;publicclassTeste{publicTeste(){Filef1=newFile("Teste.txt");comFileWriter(f1);Filef2=newFile("Teste2.txt");comFileOutputStream(f2);}privatevoidcomFileOutputStream(Filef){FileOutputStreamoutput=null;try{output=newFileOutputStream(f);Stringstring="Escrevendo uma string";char[]strArray=string.toCharArray();for(inti=0;i<strArray.length;i++){output.write(strArray[i]);}}catch(IOExceptionioex){ioex.printStackTrace();}finally{try{output.close();}catch(IOExceptionioex){ioex.printStackTrace();}}}privatevoidcomFileWriter(Filef){FileWriterwriter=null;try{writer=newFileWriter(f);writer.write("Escrevendo uma string");}catch(IOExceptionioex){ioex.printStackTrace();}finally{try{writer.close();}catch(IOExceptionioex){ioex.printStackTrace();}}}/** * @param args */publicstaticvoidmain(String[]args){newTeste();System.exit(0);}}