— Привіт, Аміго!
— Привіт, Еллі!
— Щось ти сьогодні дуже задоволений.
— Ха, Білаабо захворів.
— І не зміг тобі розповісти купу цікавого, корисного та потрібного. Пора б уже вирости з дитячих штанців.
— Угу. Я обіцяю сам у всьому розібратися. Білаабо дав мені посилання.
— От і відмінно. Тоді я розповім тобі цікаву тему.
Як завантажити файл з Інтернету.
Для того, щоб працювати з інтернетом у 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>— Як цікаво. Не думав, що завантажити файл так просто.
— Ну так зазвичай ніхто не робить. Т.к. файли можуть бути великими і завантажуватись дуже довго.
Є досить багато фреймворків, які значно полегшують роботу з файлами, але я не готова зараз про них розповісти. Якось іншим разом.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ