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

— Привіт, Еллі!

— Щось ти сьогодні дуже задоволений.

— Ха, Білаабо захворів.

— І не зміг тобі розповісти купу цікавого, корисного та потрібного. Пора б уже вирости з дитячих штанців.

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

— От і відмінно. Тоді я розповім тобі цікаву тему.

Як завантажити файл з Інтернету.

Для того, щоб працювати з інтернетом у 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, новий File("c:/google.png").toPath());< /pre>

Спочатку встановлюємо з'єднання з сервером – отримуємо об'єкт 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, новий File("c:/google.png").toPath());< /pre>

— Як цікаво. Не думав, що завантажити файл так просто.

— Ну так зазвичай ніхто не робить. Т.к. файли можуть бути великими і завантажуватись дуже довго.

Є досить багато фреймворків, які значно полегшують роботу з файлами, але я не готова зараз про них розповісти. Якось іншим разом.