📜  java 从 url 获取文件 - Java (1)

📅  最后修改于: 2023-12-03 15:31:33.063000             🧑  作者: Mango

Java 从 URL 获取文件

有时候我们需要从远程服务器上获取文件并在 Java 应用程序中处理。这时候我们可以使用 Java 中的 URL 类和 InputStream 来实现该功能。

获取远程文件

以下是获取远程文件的 Java 代码片段:

import java.io.*;
import java.net.*;

public class URLDemo {

    public static void main(String[] args) {
        try {
            // 创建 URL 对象
            URL url = new URL("http://example.com/image.jpg");

            // 打开连接
            HttpURLConnection connection = (HttpURLConnection)url.openConnection();
            connection.setRequestMethod("GET");

            // 获取输入流
            InputStream in = connection.getInputStream();

            // 读取数据
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int n = 0;
            while ((n = in.read(buffer)) > 0) {
                out.write(buffer, 0, n);
            }

            // 关闭输入流和输出流
            in.close();
            out.close();

            // 将字节数组转换为文件
            FileOutputStream file = new FileOutputStream("image.jpg");
            file.write(out.toByteArray());
            file.close();

            System.out.println("File downloaded successfully!");

        } catch (Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }

}
解释代码

上述的代码需要连接到远程服务器并从中获取文件。以下是代码中涉及的几个关键步骤:

创建 URL 对象

我们首先需要创建一个 URL 对象来连接到远程服务器。在上面的例子中,我们使用了“http://example.com/image.jpg”这个 URL。实际应用中,你需要将它替换为目标文件的 URL。

URL url = new URL("http://example.com/image.jpg");
打开连接

我们使用 URL 对象的 openConnection() 方法打开与服务器的连接。在上面的例子中,我们使用了 HttpURLConnection 类型的连接。我们使用它来打开连接。

HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
获取输入流

我们使用连接的 getInputStream() 方法获取输入流。通过输入流可以读取从远程服务器上返回的数据。

InputStream in = connection.getInputStream();
读取数据

我们可以使用输入流来读取从远程服务器上获取的数据。在上述代码中,我们使用了 ByteArrayOutputStream 类来临时保存数据。我们可以使用输入流的 read() 方法读取每一个字节,并将其保存到 ByteArrayOutputStream 中。

ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int n = 0;
while ((n = in.read(buffer)) > 0) {
    out.write(buffer, 0, n);
}
关闭输入流和输出流

获取数据后,我们需要关闭输入流和 ByteArrayOutputStream 对象。

in.close();
out.close();
将字节数组转换为文件

最后,我们把从远程服务器获取的数据转换为字节数组,并将其写到磁盘上作为文件。在上述代码中,我们使用 FileOutputStream 类来操作磁盘文件。我们使用它的 write() 方法将字节数组写到文件中。

FileOutputStream file = new FileOutputStream("image.jpg");
file.write(out.toByteArray());
file.close();
结论

在本文中,我们介绍了如何使用 Java 代码从远程服务器获取文件。我们首先创建一个 URL 对象,然后打开与服务器的连接,并获取输入流。我们使用输入流来读取从远程服务器上获取的数据,并将其保存为字节数组。最后,我们把字节数组写到磁盘上作为文件进行保存。