“嗨,阿米戈!”
“嗨,艾莉!”
“你今天似乎对自己很满意。”
“呵,比拉博生病了。”
“所以他没法给你解释一堆有趣的、有用的、需要的东西,你该穿上你的大机器人裤了。”
“嗯嗯。我保证自己解决所有问题。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());
“真有意思!没想到下载一个文件这么简单。”
“好吧,通常没有人这样做,因为文件可能很大并且需要很长时间才能下载。”
“有很多框架可以大大简化文件处理,但我现在还没准备好谈论它们。改天再说吧。”
GO TO FULL VERSION