"Ciao, Amico!"

"Ciao, Eli!"

"Sembri molto soddisfatto di te stesso oggi."

"Heh, Bilaabo si è ammalato."

"Quindi non ha potuto spiegarti un mucchio di cose interessanti, utili e necessarie. È ora di indossare i tuoi pantaloni da grande robot."

"Uh-huh. Prometto di capire tutto da solo. Bilaabo mi ha dato un link."

"Va bene, bene. Allora ti dirò qualcosa di interessante."

"Ovvero, come scaricare video da Internet."

"Per lavorare con Internet, Java ha una classe speciale chiamata URL. Ecco come utilizzare questa classe per scaricare un file:"

1) Innanzitutto, devi specificare l'URL corretto del server di cui hai bisogno.

2) Quindi è necessario utilizzare l'URL per stabilire una connessione con il server.

3) Quindi inviare il corpo della richiesta se si tratta di una richiesta POST. Oppure puoi saltare questo passaggio se si tratta di una richiesta GET.

4) Infine, leggi la risposta del server.

"Ecco come appare un semplice download di file:"

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

"In primo luogo, stabiliamo una connessione con il server ottenendo un oggetto URLConnection ."

"Quindi otteniamo l'OutputStream su cui deve essere scritta la richiesta. E ci scriviamo qualcosa."

"Quindi otteniamo l'oggetto InputStream che rappresenta la risposta, da cui leggiamo la risposta stessa. Usiamo il metodo Files.copy per salvare i dati inviati nel file «c:/google.png»."

"Sì, ho capito. Cos'è «write(1)»?"

"Bene, l'ho incluso per mostrarti che puoi scrivere qualcosa lì. In realtà non è necessario scrivere nulla nella richiesta per scaricare il file. Puoi semplicemente ottenere immediatamente un InputStream e iniziare a leggere la risposta da lì. L'oggetto URL ha persino un metodo openStream() che restituisce immediatamente un oggetto InputStream. Ma questo è adatto solo per le richieste GET. Ad esempio:"

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

"Che interessante! Non pensavo che scaricare un file fosse così facile."

"Beh, di solito nessuno lo fa così, dato che i file possono essere grandi e richiedere molto tempo per essere scaricati."

"Esistono alcuni framework che semplificano notevolmente il lavoro con i file, ma non sono pronto a parlarne adesso. Un'altra volta."