"Olá, amigo!"
"Oi, Ellie!"
"Você parece muito satisfeito consigo mesmo hoje."
"Heh, Bilaabo ficou doente."
"Então ele não poderia explicar um monte de coisas interessantes, úteis e necessárias para você. É hora de colocar suas calças de grande robô."
"Uh-huh. Eu prometo descobrir tudo sozinho. Bilaabo me deu um link."
"Ok, bom. Então vou te contar uma coisa interessante."
"Ou seja, como baixar vídeos da Internet."
"Para trabalhar com a Internet, o Java possui uma classe especial chamada URL. Veja como usar esta classe para baixar um arquivo:"
1) Primeiro, você precisa especificar a URL correta do servidor que você precisa.
2) Então você precisa usar a URL para estabelecer uma conexão com o servidor.
3) Em seguida, envie o corpo da solicitação se for uma solicitação POST. Ou você pode pular esta etapa se for uma solicitação GET.
4) Finalmente, leia a resposta do servidor.
"É assim que um simples download de arquivo se parece:"
URL url = new URL("https://www.google.com.ua/images/srpr/logo11w.png");
URLConnection connection = url.openConnection(); // Establish a connection
// Get an OutputStream in order to write the request to it
OutputStream outputStream = connection.getOutputStream();
outputStream.write(1);
outputStream.flush();
// Get an InputStream in order to read the response from it
InputStream inputStream = connection.getInputStream();
Files.copy(inputStream, new File("c:/google.png").toPath());
"Primeiro, estabelecemos uma conexão com o servidor obtendo um objeto URLConnection ."
"Em seguida, obtemos o OutputStream no qual a solicitação precisa ser gravada. E escrevemos algo nele."
"Em seguida, obtemos o objeto InputStream que representa a resposta, a partir do qual lemos a própria resposta. Usamos o método Files.copy para salvar os dados enviados no arquivo «c:/google.png»."
"Sim, entendo. O que é «escrever(1)»?"
"Bem, eu incluí isso para mostrar que você pode escrever algo lá. Na verdade, você não precisa escrever nada na solicitação para fazer o download do arquivo. Você pode obter imediatamente um InputStream e começar a ler a resposta a partir daí. O objeto URL ainda tem um método openStream() que retorna imediatamente um objeto InputStream. Mas isso só é adequado para solicitações GET. Por exemplo:"
URL url = new URL("https://www.google.com.ua/images/srpr/logo11w.png");
InputStream inputStream = url.openStream();
Files.copy(inputStream, new File("c:/google.png").toPath());
"Que interessante! Não pensei que baixar um arquivo fosse tão fácil."
"Bem, ninguém costuma fazer assim, já que os arquivos podem ser grandes e demorar muito para baixar."
"Existem alguns frameworks que simplificam muito o trabalho com arquivos, mas não estou pronto para falar sobre eles agora. Em outra ocasião."
GO TO FULL VERSION