Carregar arquivo de uma URL

Olá amigos,
Seguinte eu estou desenvolvendo uma aplicação web que eu preciso carregar um arquivo.jasper para poder exibir um relatorio.

Vamos supor que minha aplicacao esteja no endereço: http://localhost:8080/site/ e o arquivo.jasper esteja na pasta WebContent/relatorios/arquivo.jasper.

Eu nao preciso salvar em disco este arquivo, so preciso de uma referencia para gerar JasperPrint, a questão: Que metodo da classe URL eu uso ? eu devo retornar um InputStream e depois iteragir? porque o conteudo do arquivo vem todo desconfigurado??

Obrigado!!!

no caso você quer baixar o relatório ? imprimir ?

Amigo no momento eu gostaria so de baixar o arquivo que esta no endereço web o resto da implementação eu já tenho.
Obrigado

Certo, eu tenho o código pra baixar pelo pdf, que mostra como você fazer pra pegar o .jasper na pasta webContent só que não tou em casa e provavelmente só vou chegar a noite. Se você puder esperar, eu posto quando chegar…

No caso no seus JasperPrint você informa o caminho do arquivo .jasper certo ?

Você poderia usar esse código:

FacesContext.getCurrentInstance().getExternalContext().getContext()).getRealPath("/relatorios/arquivo.jasper");

Se não me engano ela pega o path real a partir da sua pasta WebContent. Veja aí e dê um retorno.

Valeio, vamos imaginar que o arquivo esteja na web: www.meusite.com.br, Como eu faria para criar uma copia em memória para depois gerar uma instancia jasper??

posta o codigo que você faz para baixar o arquivo.

Vamos lá, como vê eu tenho um arquivo chamado arquivo.txt e o conteudo deste arquivo é Olá Mundo, eu consigo gerar o novo arquivo (novo_arquivo.txt) porem o que vejo em conteudo é o seguinte valor:

[i]

html, body {height:100%;margin:0;}Sistema

[/i]

try{   
          URL url = new URL("http://localhost:8080/loja/relatorios/arquivo.txt");
            File file = new File("novo_arquivo.txt");
            OutputStream out = new FileOutputStream(file, false);      
            URLConnection conn = url.openConnection();                       
            InputStream in = conn.getInputStream();   
            int i=0;   
            while ((i = in.read()) != -1){   
                out.write(i);   
            }   
            in.close();   
            out.close();   
            System.out.println("Ok");
                                                  
        }   
        catch (FileNotFoundException e){   
            System.out.println("Arquivo não encontrado. Causa: " + e.getMessage());   
        }   
        catch (MalformedURLException e){   
            System.out.println("Erro na formação da URL. Causa: " + e.getMessage());   
        }   
        catch (IOException e){   
            System.out.println("Erro de entrada/saida de dados. Causa: " + e.getMessage());   
        }