Java 下载服务器上的文件

在开发 Java 程序时,经常会涉及到从服务器上下载文件的需求。本文将介绍如何使用 Java 代码实现从服务器上下载文件的功能。

1. 使用 URL 和 InputStream 下载文件

Java 中可以使用 URL 和 InputStream 来实现从服务器上下载文件的操作。下面是一个示例代码,演示了如何使用这种方式下载文件。

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

public class FileDownloader {
    public static void downloadFile(String fileUrl, String savePath) throws IOException {
        URL url = new URL(fileUrl);
        URLConnection connection = url.openConnection();
        InputStream inputStream = connection.getInputStream();
        FileOutputStream outputStream = new FileOutputStream(savePath);

        byte[] buffer = new byte[1024];
        int bytesRead;
        while ((bytesRead = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, bytesRead);
        }

        outputStream.close();
        inputStream.close();
    }

    public static void main(String[] args) {
        String fileUrl = "
        String savePath = "D:/downloads/file.txt";

        try {
            downloadFile(fileUrl, savePath);
            System.out.println("文件下载成功!");
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("文件下载失败!");
        }
    }
}

上述代码中,downloadFile 方法接受两个参数:文件的 URL 和保存文件的路径。它首先创建一个 URL 对象,然后使用 openConnection 方法打开与该 URL 的连接。接下来,获取连接的输入流并创建一个输出流,用于将下载的数据写入到本地文件。最后,使用一个循环不断从输入流中读取数据并写入到输出流中,直到读取完所有数据。下载完成后,记得关闭输入流和输出流。

main 方法中,我们提供了一个示例的文件下载链接和保存路径,并调用 downloadFile 方法来下载文件。如果下载成功,会输出"文件下载成功!";如果下载失败,会输出"文件下载失败!"。

2. 使用 HttpClient 下载文件

除了使用 URL 和 InputStream,还可以使用 Apache HttpClient 库来下载文件。HttpClient 提供了更多的功能和更简洁的 API。下面是一个使用 HttpClient 下载文件的代码示例。

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import java.io.FileOutputStream;
import java.io.IOException;

public class FileDownloader {
    public static void downloadFile(String fileUrl, String savePath) throws IOException {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpGet httpGet = new HttpGet(fileUrl);

        CloseableHttpResponse response = httpClient.execute(httpGet);
        HttpEntity entity = response.getEntity();

        if (entity != null) {
            FileOutputStream outputStream = new FileOutputStream(savePath);
            entity.writeTo(outputStream);
            outputStream.close();
        }

        response.close();
        httpClient.close();
    }

    public static void main(String[] args) {
        String fileUrl = "
        String savePath = "D:/downloads/file.txt";

        try {
            downloadFile(fileUrl, savePath);
            System.out.println("文件下载成功!");
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("文件下载失败!");
        }
    }
}

上述代码中,我们使用了 Apache HttpClient 库来发送 HTTP 请求和处理响应。通过调用 createDefault 方法创建一个默认的 CloseableHttpClient 实例。然后,创建一个 HttpGet 对象,将文件的 URL 传入构造函数。接着,使用 httpClient 执行 httpGet 请求,并获取响应对象。从响应对象中获取到实体对象 entity,并将其写入到本地文件。最后,记得关闭响应和 httpClient。

main 方法中,我们同样提供了一个示例的文件下载链接和保存路径,并调用 downloadFile 方法来下载文件。如果下载成功,会输出"文件下载成功!";如果下载失败,会输出"文件下载失败!"。

总结

本文介绍了两种使用 Java 下载服务器上文件的方法,分别是使用 URL 和 InputStream,以及使用 Apache HttpClient。这些方法可以根据实际情况选择使用。希望本文对你理解如何从服务器上下载文件有所帮助。

journey
    title Java 下载服务器