— Привет, Амиго!
— Привет, Элли!
— Что-то ты сегодня сильно довольный.
— Ха, Билаабо заболел.
— И не смог тебе рассказать кучу интересного, полезного и нужного. Пора бы уже вырасти из детских штанишек.
— Угу. Я обещаю сам во всем разобраться. Билаабо дал мне ссылку.
— Вот и отлично. Тогда я расскажу тебе интересную тему.
Как скачать файл из интернета.
Для того, чтобы работать с интернетом в 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());
— Как интересно. Не думал, что скачать файл так просто.
— Ну, так обычно никто не делает. Т.к. файлы могут быть большими и скачиваться очень долго.
Есть достаточно много фреймворков, который значительно упрощают работу с файлами, но я не готова сейчас про них рассказать. Как-нибудь в другой раз.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ