Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

Java bufferedreader文件下载


在 Java 中使用 BufferedReader 进行文件下载可以通过多种方式实现,以下是其中一些常见的方式,包括使用原生 Java 和使用第三方库。对于每种方式,我将提供详细的步骤流程和示例代码。

使用原生 Java 实现文件下载

  1. 创建 URL 对象来表示要下载的文件的 URL。
  2. 打开一个输入流(InputStream)来连接到该 URL。
  3. 创建一个 BufferedReader 来读取文件内容。
  4. 创建一个输出流(OutputStream)来保存文件内容。
  5. 使用循环读取数据并将其写入输出流,直到文件被完全下载。
  6. 关闭输入流、输出流和 BufferedReader

示例代码:

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

public class FileDownloader {
    public static void main(String[] args) {
        String fileUrl = "https://example.com/file.txt";
        String savePath = "downloaded_file.txt";

        try {
            URL url = new URL(fileUrl);
            InputStream inputStream = url.openStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            FileOutputStream fileOutputStream = new FileOutputStream(savePath);

            String line;
            while ((line = reader.readLine()) != null) {
                fileOutputStream.write(line.getBytes());
            }

            inputStream.close();
            fileOutputStream.close();
            reader.close();

            System.out.println("File downloaded successfully.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用 Apache HttpClient 库实现文件下载

使用 Apache HttpClient 库可以更方便地处理 HTTP 请求和文件下载。

Maven 依赖:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.13</version>
</dependency>

Gradle 依赖:

implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.13'

步骤流程:

  1. 创建一个 CloseableHttpClient 对象。
  2. 创建 HttpGet 请求对象,设置要下载的文件的 URL。
  3. 执行 HTTP 请求,获取响应对象。
  4. 从响应对象中获取输入流,然后使用 BufferedReader 读取文件内容。
  5. 创建一个输出流来保存文件内容。
  6. 使用循环读取数据并将其写入输出流,直到文件被完全下载。
  7. 关闭输入流、输出流、 BufferedReader 和 HttpClient。

示例代码:

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 java.io.*;

public class HttpClientFileDownloader {
    public static void main(String[] args) {
        String fileUrl = "https://example.com/file.txt";
        String savePath = "downloaded_file.txt";

        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            HttpGet httpGet = new HttpGet(fileUrl);
            try (CloseableHttpResponse response = httpClient.execute(httpGet);
                 InputStream inputStream = response.getEntity().getContent();
                 BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                 FileOutputStream fileOutputStream = new FileOutputStream(savePath)) {

                String line;
                while ((line = reader.readLine()) != null) {
                    fileOutputStream.write(line.getBytes());
                }

                System.out.println("File downloaded successfully.");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这些是使用 BufferedReader 进行文件下载的两种常见方式,一种是使用原生 Java,另一种是使用 Apache HttpClient 库。您可以根据您的项目需求选择其中一种方式。如果需要处理更复杂的 HTTP 请求,使用第三方库通常更方便。