Estou desenvolvendo um programa para copiar um arquivo que eu coloquei dentro do meu projeto para o computador que ele for executado.
Quando rodo o programa dentro da IDE ele funciona OK! Contudo, quando gero um .jar ele não funciona.
Pelo o erro que aparece creio que o “path” esteja errado, mas não sei como fazer funcionar. A Imagem do erro está em anexo.
Trabalhe com FileInputStream e FileOutputStream para fazer a cópia de um lugar para outro.
Se esperar até amanhã a tarde, posto um método que faz isso.
Obrigado. Este método deixa apenas sobreescrever um arquivo já existente, e não copiar um arquivo novo para um diretório no qual ele não exista… e não existe um método para fazer isso, tipo: “copyInputStreamToDirectory”.
Contudo, acho que posso usar esse metódo mesmo, já que na aplicação real o arquivo que vou copiar vai substituir um já existente (é um arquivo .swf será que funciona também?).
E o melhor funcionou pelo Jar.
O código ficou assim:
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
InputStream source = getClass().getResourceAsStream("/resources/teste.txt");
File file = new File("C:\\abc\\teste.txt");
try {
FileUtils.copyInputStreamToFile(source, file);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
Ah sim, entendi meu erro. Não tinha colocado o nome do arquivo a ser gerado no destino. E quando coloquei pensei que tinha que ter também o arquivo no diretório.
Faça o seguinte: crie um pacote no sourcepath chamado “resources” igual ao meu exemplo, coloca seu arquivo lá, na hora de criar o inputstream coloque um “/” no ínico da string conforme o meu exemplo, e faça o teste. Você pode também pra tirar a dúvida criar um destino com um nome “normal” sem o " ’ " como você fez.