"Cześć, Amigo!"
"Cześć, Ellie!"
– Wydajesz się być dzisiaj z siebie bardzo zadowolony.
„Hej, Bilaabo zachorował”.
„Więc nie mógł ci wyjaśnić wielu interesujących, przydatnych i potrzebnych rzeczy. Czas założyć spodnie wielkiego robota”.
„Uh-huh. Obiecuję, że sam to wszystko rozgryzę. Bilaabo dał mi link”.
- Dobrze, dobrze. W takim razie opowiem ci coś ciekawego.
„Mianowicie, jak pobierać filmy z Internetu”.
„Aby pracować z Internetem, Java ma specjalną klasę o nazwie URL. Oto jak użyć tej klasy do pobrania pliku:”
1) Najpierw musisz podać poprawny adres URL serwera, którego potrzebujesz.
2) Następnie musisz użyć adresu URL, aby nawiązać połączenie z serwerem.
3) Następnie wyślij treść żądania, jeśli jest to żądanie POST. Możesz też pominąć ten krok, jeśli jest to żądanie GET.
4) Na koniec przeczytaj odpowiedź serwera.
„Tak wygląda proste pobieranie pliku:”
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());
„Najpierw nawiązujemy połączenie z serwerem, pobierając obiekt URLConnection ”.
„Następnie otrzymujemy OutputStream, do którego należy zapisać żądanie. I coś do niego piszemy”.
„Następnie otrzymujemy reprezentujący odpowiedź obiekt InputStream, z którego odczytujemy samą odpowiedź. Wykorzystujemy metodę Files.copy do zapisania przesłanych danych do pliku «c:/google.png».”
„Tak, rozumiem. Co to jest «write(1)»?”
„Cóż, dodałem to, aby pokazać, że możesz tam coś napisać. W rzeczywistości nie musisz pisać niczego w żądaniu, aby pobrać plik. Możesz po prostu natychmiast uzyskać InputStream i stamtąd zacząć czytać odpowiedź. Obiekt URL ma nawet metodę openStream(), która natychmiast zwraca obiekt InputStream. Jest to jednak odpowiednie tylko dla żądań GET. Na przykład:
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());
„Jakie to interesujące! Nie sądziłem, że pobieranie pliku jest takie łatwe”.
„Cóż, nikt zwykle nie robi tego w ten sposób, ponieważ pliki mogą być duże i ich pobieranie może zająć bardzo dużo czasu”.
„Istnieje całkiem sporo frameworków, które znacznie upraszczają pracę z plikami, ale nie jestem gotów teraz o nich mówić. Kiedy indziej”.
GO TO FULL VERSION