“嗨,阿米戈!”

“嗨,艾莉!”

“你今天似乎对自己很满意。”

“呵,比拉博生病了。”

“所以他没法给你解释一堆有趣的、有用的、需要的东西,你该穿上你的大机器人裤了。”

“嗯嗯。我保证自己解决所有问题。Bilaabo 给了我一个链接。”

“好,好,那我给你讲个有趣的事情。”

“即,如何从 Internet 下载视频。”

“为了与 Internet 一起工作,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 对象甚至有一个 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());

“真有意思!没想到下载一个文件这么简单。”

“好吧,通常没有人这样做,因为文件可能很大并且需要很长时间才能下载。”

“有很多框架可以大大简化文件处理,但我现在还没准备好谈论它们。改天再说吧。”