"안녕, 아미고!"

"안녕, 엘리!"

"당신은 오늘 자신에 대해 매우 만족스러워 보입니다."

"허, 빌라아보가 아팠어."

"그래서 그는 당신에게 흥미롭고 유용하고 필요한 많은 것들을 설명할 수 없었습니다. 이제 당신의 큰 로봇 바지를 입을 시간입니다."

"어허. 내가 알아서 하겠다고 약속할게. Bilaabo가 나에게 링크를 줬어."

"알았어, 알았어. 그럼 재미있는 얘기를 해줄게."

"즉, 인터넷에서 비디오를 다운로드하는 방법입니다."

"인터넷 작업을 위해 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(); // 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());

"먼저 URLConnection 개체를 가져와서 서버와의 연결을 설정합니다 ."

"그런 다음 요청을 작성해야 하는 OutputStream을 얻습니다. 그리고 여기에 무언가를 작성합니다."

"그런 다음 응답을 나타내는 InputStream 개체를 가져오고 여기에서 응답 자체를 읽습니다. Files.copy 메서드를 사용하여 보낸 데이터를 «c:/google.png» 파일에 저장합니다."

"예, 알겠습니다. «write(1)»가 무엇입니까?"

"글쎄요, 거기에 무언가를 쓸 수 있다는 것을 보여주기 위해 포함시켰습니다. 실제로 파일을 다운로드하기 위해 요청에 아무 것도 쓸 필요가 없습니다. 즉시 InputStream을 가져오고 거기에서 응답을 읽기 시작할 수 있습니다. URL 개체에는 InputStream 개체를 즉시 반환하는 openStream() 메서드도 있습니다. 그러나 이것은 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());

"재미있다! 파일 다운로드가 이렇게 쉬울 줄은 몰랐어."

"음, 파일이 클 수 있고 다운로드하는 데 시간이 오래 걸릴 수 있기 때문에 일반적으로 아무도 이렇게 하지 않습니다."

"파일 작업을 크게 단순화하는 몇 가지 프레임워크가 있지만 지금은 이에 대해 이야기할 준비가 되지 않았습니다. 나중에."