Como fazer download de um arquivo da internet com java

Bem fazer download de arquivo é bem simples, vamos utilizar a classe java.net.URL



import java.io.*;
import java.net.URL;
import java.net.URLConnection;

/**
 *
 * @author Moacir.com.br
 * 
 * Exemplo de como fazer download de um arquivo em java.
 * 
 * 
 * 
 */
public class FazDownload {


    public static void main(String[] args)  {
        String protocolo="http";
        String endereco ="moacirrf.com.br";
        String arquivo="/arquivos/JSFImmediate.zip";
        
        try {
           //cria URL
            URL url1 = new URL(protocolo,endereco,arquivo);
            //abre uma conexao na url criada àcima
           URLConnection con =  url1.openConnection();
           
           //tenta conectar.
           con.connect();
           
           //arquivo de saida
            FileOutputStream fileOut = new FileOutputStream("c:/teste/JSFImmediate.zip");
            
            int c=0;
            
           do{
             //le o byte
               c=con.getInputStream().read();
             
               //escreve o byte no arquivo saida
               fileOut.write(c);
               
   
              
           }while(c !=-1);
        
           //fecha o arquivo de saida
           fileOut.close();
           
           System.out.println("Arquivo baixado com sucesso");
        }catch(IOException e){   
                 e.printStackTrace();
        } 
         
    }
}

Segue algumas explicações.

Na linha 23 criamos o objeto URL, dentre os diversos construtores disponíveis na classe, estamos utilizando este que recebe três parâmetros, URL(protocol, host, file).

  • Primeiro-parâmetro é o protocolo, no nosso caso utilizamos o HTTP;
  • Segundo- parâmetro é o host, o endereço do servidor;
  • Terceiro-É o arquivo que você deseja acessar no servidor, poder ser um arquivo de texto, uma pagina html etc, no que no nosso caso estamos acessando o arquivo ZIPque esta dentro da pasta arquivos de modo que a url normal é http://moacirrf.com.br/arquivos/JSFImmediate.zip.

Na linha 25 criamos uma conexão com o host,usando a classe URLConnection, Não é realmente necessário utilizar esta classe para este exemplo, mas o interessante de usa-la, você pode utilizar alguma das suas sublasses como por exemplo a HttpURLConnection para configurar ou receber parâmetros específicos do protocolo HTTP, como por exemplo código do status.

Até logo pessoal;

Como ser um pouco mais produtivo utilizando Eclipse e JSF

Em primeiro lugar, vou fazer um critica f****-se você não gostar, A ide Eclipse para JSF junto com seus plugins Jboss Tools é lenta e trava com muita facilidade, mas tomando algumas providências antes mesmo de começar a escrever o seu Managed Bean,você pode ser bem produtivo, segue algumas dicas para manter sua sanidade mental ao usar o JSF e você não machucar a sua mão dando soco na mesa.

1-Não coloque tantos atributos no seu Managed Bean distribua em mais de uma classe, ou até mesmo em mais de um ManagedBean, use Facelets para compor os seus templates, não importa se você  tenha que criar 10 templates para construir uma tela, é bem melhor fazer isso do que por tudo  em uma pagina e a IDE TRAVAR quando você der um CTRL +espaço.

2- No JSF 1.2 não existe navegação implicita, então se possivel use a Navegação Global para que você não precise ficar relacionando páginas com páginas, e deixar seu FacesConfig imenso dificultando ainda mais o trabalho da IDE, é bem fácil:


<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>incluir</from-outcome>
<to-view-id>/incluir.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>editar</from-outcome>
<to-view-id>/editar.xhtml</to-view-id>
</navigation-case>
</navigation-rule>

Leia mais sobre este assunto aqui:

http://www.jsftutorials.net/jsf-navigation-by-examples.html

3-Utilize dois arquivos faces-config:

Você pode utilizar mais de um arquivo de configuração do JSF basta fazer isto:

  • Altere o arquivo web.xml


<context-param>

<param-name>javax.faces.CONFIG_FILES</param-name>

<param-value>/WEB-INF/faces-config.xml</param-value>
<param-value>/WEB-INF/faces-config-navegacao.xml</param-value>
</context-param>


Note que neste exemplo temos dois arquivos de configuração:

faces-config.xmlfaces-config-navegacao.xml

O primeiro com a declaração dos componentes(Backing Beans,Converters etc…) e outro com a navegação.

 

4- Continua lento, tente aumentar a memoria do eclipse:

http://blog.xam.dk/?p=58

Não adiantando, aceite e espere, você ja esta sentado mesmo…

Sobre o CTRL +espaço, só tenho uma coisa a dizer, eu uso, e  muito, e gosto de resposta imediata da IDE, se você acha que Code Assist é coisa de trouxa, então vai programar no VI, neste quesito a Intellij Idea é excelente mas nunca usei para JSF pois a versão Free não possui suporte ao JSF.

Era isso…

O sonho RAD dos defensores do  “padrão” JSF continua bem longe do ideal, mas essas dicas ja valem alguma coisa.

Até

ps.: Eu prefiro frameworks como Wicket e Click mas nunca escrevi sequer uma letra sobre os mesmos, que curioso….