terça-feira, 20 de dezembro de 2016

Java: Fazendo download de um arquivo

Mais um tutorial JAVA aqui, hoje vamos ver como fazer um download de um arquivo por Java.



01. public static void downloadFileFromUrl(String url, String destiny) throws IOException
02. {
03. URL website = new URL(url);
04. URLConnection connection = website.openConnection();
05.     ReadableByteChannel rbc = Channels.newChannel( connection.getInputStream());
06.     try (FileOutputStream fos = new FileOutputStream(destiny)) {
07.      long expectedSize = connection.getContentLength();
08.         long transferedSize = 0L;
09.         while( transferedSize < expectedSize ) {
10.  transferedSize += fos.getChannel().transferFrom( rbc, transferedSize, 2048 );
11.             System.out.println("Downloading: "+(100*transferedSize/expectedSize)+"%");        
12.         }
13.         System.out.println("Download completed");
14.     }
15.  }

Como parâmetros temos uma string com o link para o arquivo que queremos fazer o download e uma string para onde queremos salvar o arquivo. Então, criamos uma url (linha 03), abrimos uma conexão (linha 04) e abrimos um canal para lermos o arquivo (linha 05). Agora nós vamos começar a escrever o arquivo, vemos o tamanho do arquivo (linha 07) e inicializamos um contador do que já foi transferido (linha 08). Agora colocamos numa repetição (linha 09), e executamos a transferencia com o método transferFrom, que tem como argumento o canal que o download está fazendo, o byte em que vai iniciar a transferência do arquivo (neste caso, o byte sempre será o total de bytes já transferido) e quantos bytes vai ter o pacote. Se você quer ter a possibilidade de ver a progressão do download, você deve usar pacotes menores. Se quiser baixar tudo de uma vez, coloque um valor gigante. O fato é que neste último, o processo  ficará travado até que o download esteja completo.
Então, terminado todos os bytes, podemos notificar que o download foi concluído.

Nenhum comentário:

Postar um comentário