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