"¡Hola, amigo!"

"¡Hola, Ellie!"

"Pareces muy satisfecho contigo mismo hoy".

"Je, Bilaabo se enfermó".

"Así que no pudo explicarte un montón de cosas interesantes, útiles y necesarias. Es hora de que te pongas los pantalones de gran robot".

"Ajá. Prometo resolverlo todo yo mismo. Bilaabo me dio un enlace".

"Está bien, bien. Entonces te diré algo interesante".

"Es decir, cómo descargar videos de Internet".

"Para trabajar con Internet, Java tiene una clase especial llamada URL. Aquí se explica cómo usar esta clase para descargar un archivo:"

1) Primero, debe especificar la URL correcta del servidor que necesita.

2) Luego, debe usar la URL para establecer una conexión con el servidor.

3) Luego envíe el cuerpo de la solicitud si es una solicitud POST. O puede omitir este paso si se trata de una solicitud GET.

4) Finalmente, lea la respuesta del servidor.

"Así es como se ve una descarga de archivo simple:"

Ejemplo
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());

"Primero, establecemos una conexión con el servidor obteniendo un objeto URLConnection ".

"Luego obtenemos el OutputStream en el que se debe escribir la solicitud. Y le escribimos algo".

"Luego obtenemos el objeto InputStream que representa la respuesta, del cual leemos la respuesta en sí. Usamos el método Files.copy para guardar los datos enviados en el archivo «c:/google.png»."

"Sí, entiendo. ¿Qué es «escribir (1)»?"

"Bueno, incluí eso para mostrarle que puede escribir algo allí. En realidad, no necesita escribir nada en la solicitud para descargar el archivo. Puede obtener inmediatamente un InputStream y comenzar a leer la respuesta desde allí. El objeto URL incluso tiene un método openStream() que devuelve inmediatamente un objeto InputStream. Pero esto solo es adecuado para solicitudes GET. Por ejemplo:"

Ejemplo
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());

"¡Qué interesante! No pensé que descargar un archivo fuera tan fácil".

"Bueno, nadie suele hacerlo así, ya que los archivos pueden ser grandes y tardar mucho en descargarse".

"Hay bastantes marcos que simplifican enormemente el trabajo con archivos, pero no estoy listo para hablar de ellos ahora. En otro momento".