— Привет, Амиго!

— Привет, Элли!

— Что-то ты сегодня сильно довольный.

— Ха, Билаабо заболел.

— И не смог тебе рассказать кучу интересного, полезного и нужного. Пора бы уже вырасти из детских штанишек.

— Угу. Я обещаю сам во всем разобраться. Билаабо дал мне ссылку.

— Вот и отлично. Тогда я расскажу тебе интересную тему.

Как скачать файл из интернета.

Для того, чтобы работать с интернетом в Java есть специальный класс – URL. Вот как скачать файл при помощи этого класса:

1) Для начала надо задать правильный URL нужного тебе сервера.

2) Затем нужно установить соединение с сервером, с помощью этого URL.

3) Затем передать тело запроса, если это POST-запрос. Или пропустить этот шаг, если это GET-запрос.

4) И наконец, прочитать ответ сервера.

Вот как будет выглядеть простое скачивание файла:

Пример
URL url = new URL("https://www.google.com.ua/images/srpr/logo11w.png");
URLConnection connection = url.openConnection(); //устанавливаем соединение

//получаем OutputStream, чтобы писать в него данные запроса
OutputStream outputStream = connection.getOutputStream();
outputStream.write(1);
outputStream.flush();

//получаем InputStream, чтобы читать из него данные ответа
InputStream inputStream = connection.getInputStream();
Files.copy(inputStream, new File("c:/google.png").toPath());

Сначала устанавливаем соединение с сервером – получаем объект URLConnection.

Затем получаем  OutputStream потока, куда нужно писать запрос. И что-то туда пишем.

Затем получаем объект  InputStream ответа, из которого и читаем сам ответ. С помощью метода Files.copy сохраняем присланные данные в файл «c:/google.png»

— Да, это понятно. А что еще за write(1)?

— Ну, это я для примера показала, что туда можно что-то писать. На самом деле, для скачивания файла ничего в Request писать не надо. Можно просто сразу получать InputStreamи начинать читать оттуда ответ. У объекта URL есть даже метод openStream(), который сразу возвращает объект InputStream. Но это годится только для GET-запросов. Пример:

Пример
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());

— Как интересно. Не думал, что скачать файл так просто.

— Ну, так обычно никто не делает. Т.к. файлы могут быть большими и скачиваться очень долго.

Есть достаточно много фреймворков, который значительно упрощают работу с файлами, но я не готова сейчас про них рассказать. Как-нибудь в другой раз.